これは遅すぎる答えかもしれません。しかし、この例がなぜそれほど重要なのかを誰かが理解するのに役立つことを願って@override
います (このようなシナリオの場合)
public interface Restaurant(){
public boolean getBill();
public BigDecimal payAmount();
}
public interface Food() extends Restaurant{
public boolean haveSomeFood();
public boolean drinkWater();
}
public class Hungry() implements Food{
public boolean haveSomeFood(){}
public boolean drinkWater(){}
public boolean getBill(){}
public BigDecimal payAmount(){}
}
上記の例では、もし私Hungry
が しかし、レストランの実装を取り出せば、請求書を取得する必要はなく、金額を支払う必要もありません!!!!Food
Restaurant
どのように?
- インターフェイス
Food
にはキーワードがありextends Restaurant
ます。これは、クラス Hungry もインターフェイス Restaurant から実装されていることを意味します。
- インターフェイスから実際にオーバーライドされるメソッドには、キーワードがありません
@override
- そのため、キーワード extends Restaurant を削除すると (またはインターフェイス Restaurant を削除すると、エラーは表示されません。
があった場合@override
、Restaurant インターフェイスを削除しようとすると、コンパイル エラーが表示されます。
注: インターフェースを実装する場合、そのインターフェースが別のインターフェースに拡張されているのか、拡張可能なのか、継承が削除されているのかがわからない場合があります。したがって、常に@override
キーワードを使用することをお勧めします