个人感觉这个要用关于内存图的方式来说明比较好。简单说一下吧,子类建立对象的时候由于有一个隐式的super();,所以执行会跳到父类,父类有一个static的int x=2,所以x=x+1执行后x的值为3,接着执行show(),但是这里隐含了一个this.,所以调用的子类的show(),所以第一行打印的是B.x=3;接下来执行回到子类中来,又由于B b=new B(0); 中的0只是存在构造方法中的范围,所以 子类中的public void show()方法打印调用是静态中的x,所以同样的是B.x=3;而super.display()返回的是父类中私有化的y值:2,然后就是2+3的结果啦。
如果解释有误,请多多保函指正!!!
|