java 类的继承,实例化一个类时 构造方法的调用顺序
2018-06-10 21:03
260 查看
测试代码如下:
public class Gouzaofangfa { public static void main(String[] args) { new A();//----------------- A()<< System.out.println(); new A(1);//---------------- A(1)<< System.out.println(); new A(1,2);//-------------- A(1,2)<< System.out.println(); /////////////////////////////////////////////////////// System.out.println(); new B();//----------------- A()<< B()<< System.out.println(); new B(1);//---------------- A()<< B(1)<< System.out.println(); new B(1,2);//-------------- A(1,2)<< B(1,2)<< System.out.println(); /////////////////////////////////////////////////////// System.out.println(); new C();//----------------- A()<< B()<< C()<< System.out.println(); new C(1);//---------------- A()<< B()<< C(1)<< System.out.println(); new C(1,2);//-------------- A(1,2)<< B(1,2)<< C(1,2)<< } } class A{ public A(){ System.out.print("A()<< "); } public A(int i){ System.out.print("A("+i+")<< "); } public A(int i,int j){ System.out.print("A("+i+","+j+")<< "); } } class B extends A{ public B(){ //未super父类的构造方法 System.out.print("B()<< "); } public B(int i){ //super父类无参构造方法 super(); System.out.print("B("+i+")<< "); } public B(int i,int j){ //super父类带两个参数的构造方法 super(i,j); System.out.print("B("+i+","+j+")<< "); } } class C extends B{ public C(){ //未super父类的构造方法 System.out.print("C()<< "); } public C(int i){ //未super父类的构造方法 System.out.print("C("+i+")<< "); } public C(int i,int j){ //super父类带两个参数的构造方法 super(i, j); System.out.print("C("+i+","+j+")<< "); } }
输出结果如下:
A()<< A(1)<< A(1,2)<< A()<< B()<< A()<< B(1)<< A(1,2)<< B(1,2)<< A()<< B()<< C()<< A()<< B()<< C(1)<< A(1,2)<< B(1,2)<< C(1,2)<<
结论:
实例化一个类的时候 会最先调用他们父类的构造方法
在这里A是B的父类,而B又是C的父类
所以在实例化C的时候 先实例化A 再实例化B 最后实例化C
一个类有多个构造方法时
如果没有super父类带参的构造方法时 会默认调用父类无参构造方法
阅读更多相关文章推荐
- 关于JAVA继承类的静态变量、成员变量、父子类构造方法调用顺序的探讨 .
- 关于JAVA继承类的静态变量、成员变量、父子类构造方法调用顺序的探讨
- 关于JAVA继承类的静态变量、成员变量、父子类构造方法调用顺序的研究
- Java学习记录(一):Java中继承与静态static、非静态、构造方法等的初始化顺序
- JAVA初学者,调用父类有参构造方法来构建一个无参构造方法
- java中构造方法的调用顺序
- java中 静态成员、实例成员、构造方法在子类和父类中的执行顺序
- 【Java基础】继承中的代码块和构造方法的执行顺序探索
- java中的继承(子类调用父类构造方法还不懂)
- java 静态代码块,实例代码块,构造方法的执行顺序
- java类继承中的构造方法实例详解
- Java多态 实例子类自动调用父类为空的构造方法 成员变量不支持Override 可写,没多态效果
- java创建一个子类对象是会调用父类的构造方法会不会创建父类
- 子类继承父类(父类和子类里:块、静态块、构造和方法覆写)之间调用顺序
- 构造java实例的时候各个语句调用的顺序
- java代码继承难点。构造方法的调用
- Java继承关系中,父类方法使用实例变量和调用实例方法的探究
- Java中静态代码块,非静态代码块,以及父类与子类的构造方法的之间调用顺序
- Java继承关系下的构造方法调用
- 快速排序发 继承构造方法的调用顺序