用代码跟你解释一下好了,是这样的
1 基类有一个方法,比如 // 我们不考虑Object作为所有类的基类
public void method1(){
method2(); // 此方法需要调用method2();
}
public void method2(){ // 如果这个方法是abstract 的话,也许会看得更清楚,不过不常见.
}
2 子类重写了
@Override
private void method2(){ // 当然,编译错误,我们只是用来说明这样做的问题
}
3 子类的子类
如果他调用 method1() 会出现什么后果呢?
a) 他能访问method1(), 因为那是他的基类,且是public
b) 但很可惜,method1()里面 却不能访问method2()了,因为在子类中是private的了。子类之外的类即使是父类也是不能调用本类中的private成员的。会出现这样的错误情况,为了避免这样的错误,所以覆盖时规定不能缩小访问权限 |