一直认为默认访问级别的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()方法。