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

来源:互联网 发布:网页游戏编程课程 编辑:程序博客网 时间:2024/06/06 17:10

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版

0 0
原创粉丝点击