public class Test { class A{

private int getNumber(int a) {

return a+1;
}
}

class B extends A{

public int getNumber(int a) {

 return  a+2;
}
}

public void test() {

A a = new B();
System.out.println(a.getNumber(0));

}

public static void main(String[] args) { Test test =  new Test();

    test.test();
}
}
结果是1 ,为什么呢? 是不是因为内部类部动态绑定?

解决方案 »

  1.   

    将A中的方法改为public就可以了。。
      

  2.   

    这个我知道,我是想知道为什么A中的方法是private时打印出1, 对Java的深层机制不是很了解,希望高手赐教
      
     
      

  3.   

    重载的机制吧。private int getNumber(int)和public int getNumber(int)不是一个
    函数,所以没有被重载掉。还是调用父类的方法。
      

  4.   

    好像说错了。。是overwrite,重写,不是重载(overload)