一直认为默认访问级别的java 方法对子类是不可见的,也就是不能被继承的,但是下面的例子挑战了这个看法
public class TT {
public static void main(String[] args) {
B b=new B();
System.out.println(b.getA());
System.out.println(b.getB());
}
}
class A {
int x = 1;
int getA() {
return x;
}
}
class B extends A {
int x = 2;
int getB() {
return x;
}
}
这个getA明显是默认访问级别private,为什么B能调用getA()?
原来默认的访问级别是package-private, 意思是该方法对同一package中的class是可见的,也是可继承的。
如果把A的类访问级别改为public,把B放到另一个package中,那么B将不能访问A的getA()方法。