JAVA构造器内部的多态方法的行为

来源:互联网 发布:白银td行情软件 编辑:程序博客网 时间:2024/04/26 03:37

代码能说明一切:

package test;
public class Test {
 public static void main(String[] args) {
  new c();
  }
 }

class a {
 a() {
  System.out.println("父类构造方法");
  callName();
  }
 public void callName() {
  System.out.println("A_name");
  }
 }

class b extends a {
 private int bb=1;
 b() {
  System.out.println("子类构造方法");
  System.out.println(bb);          //检验基类的初始化
  callName();
  }
 public void callName() {
  System.out.println("B_name");
  }
 }
class c extends b {
 private int d=1;
 c() {
  System.out.println("孙类构造方法");
  callName();
  }
 public void callName() {
  System.out.println("C_name");
  System.out.println(d);           
  }
}

运行结果:

运行结果:

父类构造方法C_name0子类构造方法1C_name0孙类构造方法C_name1

由于多态原因,在导出类的对象为创建之前即在基类的初始化的过程中有对导出类的方法动态绑定,而这个时候导出类并未做好准备,所以出现上面的结果。(子类构造方法后面的1说明这时基类已经初始化成功)

原创粉丝点击