This question給出了答案,Java的@Override在方法上具有C#等效的override
關鍵字。但是,自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