为什么Java指定覆盖方法的访问说明符可以允许比重写方法更多但不是更少的访问?例如,超类中的受保护实例方法可以在子类中公开,但不是私有的.
我想知道:为什么重写方法不能具有比重写方法更严格的访问修饰符?
例如:
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");
}
}
Run Code Online (Sandbox Code Playgroud)
在Horse类中,为什么我不能像这样编写代码:
private void eat(){
System.out.println("Horse eating hay, oats, and horse treats");
}
Run Code Online (Sandbox Code Playgroud)
要么
protected void eat(){
System.out.println("Horse eating hay, oats, and horse treats");
}
Run Code Online (Sandbox Code Playgroud)