java 类的继承,实例化一个类时 构造方法的调用顺序
程序员文章站
2022-03-03 08:52:17
...
测试代码如下:
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父类带参的构造方法时 会默认调用父类无参构造方法
上一篇: Set和List集合
下一篇: vue实现几秒后跳转新页面
推荐阅读
-
Java实例化一个抽象类对象的方法教程
-
Java 继承父类时 子类的构造方法的特性
-
JAVA中子类继承父类时构造方法的继承问题(包括有参无参的情况)
-
Java父类和子类构造方法的调用顺序
-
子类继承父类时,创建对象,构造方法的调用问题
-
Java中的继承 一个示例(抽象类构造方法、构造方法继承、private成员继承)
-
子类继承父类中的static模块、构造方法执行顺序及java多态性
-
Java类的静态成员、静态代码块、普通成员、普通代码块、构造方法初始化执行的顺序详细说明
-
Java类的静态成员、静态代码块、普通成员、普通代码块、构造方法初始化执行的顺序详细说明
-
java 类的继承,实例化一个类时 构造方法的调用顺序