一个快速的例子。
这在Java中是允许的,而且没有任何问题。但是假设在另一个包中你声明了...
class A {
protected int foo(int x){
return x;
}
}
class B extends A {
public int foo(int x){
return x*x;
}
}
这在Java中是允许的,而且没有任何问题。但是假设在另一个包中你声明了...
A b = new B();
int z = b.foo(5);
因为 A foo() 是受保护的,所以这样做是行不通的。但是为什么要允许在子类中拥有更可访问的方法呢?这样做有帮助的情况吗?