java带参构造函数_java含参构造函数初始化

标签:

package com.mejustdoit;

public class Component1 {

public Component1(int i) {

// TODO Auto-generated constructor stub

System.out.println("Component1"+i);

}

}

package com.mejustdoit;

public class Component2 {

public Component2(int i) {

// TODO Auto-generated constructor stub

System.out.println("COmponent2"+i);

}

}

package com.mejustdoit;

public class Component3 {

public Component3(int i) {

// TODO Auto-generated constructor stub

System.out.println("component3"+i);

}

}

package com.mejustdoit;

public class Father {

Component1 c1 = new Component1(1);

Component2 c2 = new Component2(2);

public Father(int i) {

// TODO Auto-generated constructor stub

System.out.println("Father"+i);

Component3 c3 = new Component3(3);

}}

package com.mejustdoit;

public class Son extends Father {

Component1 c1 = new Component1(4);

Component2 c2 = new Component2(5);

Component3 c3 = new Component3(6);

public Son(int i) {super(i);

System.out.println("Son");}}

package com.mejustdoit;

public class PlayFatherandSon {

public static void main(String[] args) {

new Son(69);

System.out.println("8ioew");

}

}

运行结果如下:

Component11

COmponent22

Father69

component33

Component14

COmponent25

component36

Son

8ioew

下面说一下过程:进入main后new Son(69);开始构造Son对象,进入Son的构造函数

public Son(int i) {

super(i);

// TODO Auto-generated constructor stub

System.out.println("Son");

}

Son(int i)中的i被赋值69,然后往下执行到super(i);(我不知道是不是进入构造函数后调用父类的构造(要么是默认的Super()要么是Super(参数))方法,这里构造的父类的对象属于子类,然后创建对象后开始

初始化父类变量,输出

Component11

COmponent22

再初始化(执行)构造方法(是 默认的Super()要么是Super(参数)以下内容),输出

Father69

component33

然后就是初始化子类的变量,输出

Component14

COmponent25

component36

接着子类的构造方法(也就是 默认的Super()要么是Super(参数)以下内容)输出

Son

最后输出

8ioew

初始化的介绍可以参考点击打开链接

这里有些疑惑,希望可以交流:

是不是在创建对象时进入构造函数如果该类有继承关系就根据Super()/Super(参数)进入父类构造父类构造对象完成后按照初始化方法初始化子类对象(先初始化变量在初始化方法(包含构造方法))?

版权声明:本文为博主原创文章,未经博主允许不得转载。

标签:


版权声明:本文为weixin_33599503原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。