私には知りたいと思います: オーバーライドするメソッドはオーバーライドされるメソッドよりも制限的なアクセス修飾子を持つことができないのはなぜですか?例えばより限定的なアクセス修飾子を持つメソッドをオーバーライドする
:馬のクラスで
class Animal{
public void eat(){
System.out.println("Generic Animal Eating Generically");
}
}
class Horse extends Animal{
public void eat(){
System.out.println("Horse eating hay, oats, and horse treats");
}
}
、なぜ私はこのようなコードを書くことはできません。
private void eat(){
System.out.println("Horse eating hay, oats, and horse treats");
}
または
protected void eat(){
System.out.println("Horse eating hay, oats, and horse treats");
}
オーバーライドされた関数に '@Override ' – baao
を注釈する必要があります。なぜなら、' Animal animal = new Horse(); 'eat()'メソッドはprivateなので、animal.eat() 'を呼び出すことができます。しかし、「動物」クラスはそれを公に宣言した。それは理にかなっていません。 – Gondy