This question da la respuesta que @Override de Java tiene el equivalente de C# de la palabra clave override
en los métodos. Sin embargo, desde Java 1.6, la anotación @Override también se puede aplicar a las interfaces.Equivalente a Java 1.6 @Override para interfaces en C#
El uso práctico de esto es que en Java se obtienen errores de compilación cuando una clase afirma que implementa un método de interfaz cuando ya no lo hace (por ejemplo, si se elimina el método de interfaz). ¿Hay una funcionalidad equivalente en C#?
Algunos ejemplos de código:
Java:
public interface A {
public void foo();
// public void bar(); // Removed method.
}
public class B implements A {
@Override public void foo();
@Override public void bar(); // Compile error
}
C#:
public interface IA {
void Foo();
// void Bar(); // Removed method.
}
public class B : A {
public override void Foo(); // Doesn't compile as not 'overriding' method
public void Bar(); // Compiles, but no longer implements interface method
}
Estoy confundido. ¿Por qué debería 'B' implementar' A.bar' si 'A' ya no define' bar'? ¿Está buscando una forma de hacer cumplir que los niños de 'A' solo * implementen los métodos definidos por' A'? –
@M.Babcock El caso que estoy tratando de evitar es que 'B.bar()' no debería compilarse si el autor de B espera que implemente 'A.bar()'. Este es especialmente el caso si un desarrollador ingenuo elimina 'A.bar()' sin verificar primero sus clases de implementación. – Bringer128