您的位置:首页 > 编程语言 > Java开发

JAVA继承关系中构造方法的调用次序详解

2016-04-20 20:33 176 查看
/*定义父类Base1*/
public class Base1 {

int a;// 定义一个变量

/* 父类构造方法 */

public Base1(int a) {
this.a = a;
System.out.println("调用了父类的有参构造方法!");
}

public Base1() {
a = 1;
System.out.println("调用了父类的无参构造方法!!");
;
}

public static void main(String[] args) {
Son1 s1 = new Son1();// 利用子类的无参构造方法创建子类对象s1
Son1 s2 = new Son1(3, 4);// 利用子类的有两个参数的构造方法创建子类对象s2
Son1 s3 = new Son1(5);// // 利用子类的有一个参数的构造方法创建子类对象s3
s1.print();
s2.print();
s3.print();

}
}

/* 定义子类Son1*/
class Son1 extends Base1 {
private int b;

/* 子类类构造方法 */
public Son1() {
b = 2;
System.out.println("调用了子类的无参构造方法!!");
}

public Son1(int a, int b) {
super(a);
this.b = b;
System.out.println("调用了子类的有两个参数的构造方法!");
}

public Son1(int b) {
this.b = b;
System.out.println("调用了子类的有一个参构造方法!");
}

public void print() {
System.out.println("a: " + a + ",b:" + b);
}
}


输出结果如下:
调用了父类的无参构造方法!!
调用了子类的无参构造方法!!
调用了父类的有参构造方法!
调用了子类的有两个参数的构造方法!
调用了父类的无参构造方法!!
调用了子类的有一个参构造方法!
a: 1,b:2
a: 3,b:4
a: 1,b:5


由此可以得出结论:子类对象在实例化时会默认先去调用父类中的相应的构造方法,之后再调用子类中的相应构造方法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 构造方法