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

JAVA中super()作用:调用父类构造方法和构造方法链

2016-04-26 16:01 399 查看

JAVA中super()作用:调用父类构造方法和构造方法链

写给自己看的笔记。

写在纸上我会弄丢。

有什么错误欢迎大家提出。

public class Test extends B {
public static void main(String[] arg) {
new Test(2);// 生成一个类Test的匿名对象,调用构造函数Test(int n)
}

public Test(int n) {// 会默认在这个方法的第一行执行super(),即调用父类的无参数构造方法B()
System.out.println("Test的有参数构造函数,参数是" + n);
}
}

class B extends C {
public B() {// 会默认在这个方法的第一行执行super(),即调用父类的无参数构造方法C()
super(3);// 指定了父类构造函数super(int c),则不会再使用无参数构造函数super()
System.out.println("B的无参数构造函数");
}
}

class C {
C() {// 构造函数一般是public,public可写可不写
System.out.println("C的无参数构造函数");
}

public C(int c) {
System.out.println("这是有参数的构造函数,参数是" + c);
}
}


执行new Test(2)时,调用了B(),B()又调用了用super指定的构造方法C(int c),构成了一条构造方法链。

输出顺序:

这是有参数的构造函数,参数是3

B的无参数构造函数

Test的有参数构造函数,参数是2

ps:如果定义一个类的时候不写构造函数,会隐式生成一个的无参数构造函数,子类的构造方法中依旧会调用这个隐式构造函数

参考:《JAVA语言程序设计-基础篇》原书第8版
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: