我想知道:为什么重写方法不能具有比重写方法更严格的访问修饰符?
例如:
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)
还记得每个孩子都是父母的原则吗?
假设您已创建实例
Animal animal = new Horse();
Run Code Online (Sandbox Code Playgroud)
当有人做 animal.eat()现在应该发生的事情?
有动物eat()与足够的权限的方法和在同一时间,你有限制的访问eat()中Horse,以private这意味着你只能访问内马的方法.游民.
| 归档时间: |
|
| 查看次数: |
488 次 |
| 最近记录: |