结果为:base:2 derived display:0 derived display:222
java程序中的静态变量,静态代码块,代码块,变量,构造器等运行顺序大致如下:(父类静态变量,父类静态初始化块)>(子类静态变量,子类静态初始化块)>(父类变量,父类初始化块,父类构造方法)>(子类变量,子类初始化块,子类构造方法)
所以此题中: new Derived().display();先找到Derived类,而且存在它的父类,所以先运行父类中的构造器Base(),this.i表示Derived类对象的i,所以this.i=2。故为:base:2。因为构造函数是初始化类中不同对象的,所所以运行this.display();其中的this.i=0(为默认值)。然后在执行Derived中的display()方法。所以结果为:base:2 derived display:0 derived display:222
|