This question Javaの@Overrideは、メソッドのoverride
キーワードのC#に相当するという答えを示します。しかし、Java 1.6以来、@Overrideアノテーションはインタフェースにも適用できます。C#のインターフェイスのJava 1.6 @Overrideに相当する
実用的な使い方は、Javaでは、クラスがインタフェースメソッドをもはや必要としなくなったときに(例えばインタフェースメソッドが削除された場合)実装すると主張するときにコンパイルエラーが発生することです。同等の機能はC#にありますか?
いくつかのコード例:
の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
}
私は混乱しています。 'A'が' bar'を定義していない場合、なぜ 'B'は' A.bar'を実装するのですか? 'A' *の子どもだけが' A'で定義されたメソッドを実装することを強制する方法を探していますか? –
@M。Babcock私が守ろうとしているのは、Bの作者が 'A.bar()'を実装すると 'B.bar()'がコンパイルされるべきではないということです。これは、素朴な開発者がまず実装クラスをチェックせずに 'A.bar()'を削除した場合に特に当てはまります。 – Bringer128