Java 构造函数中的super()

public class Test {
    public static void main(String[] args) {
        new Son("baidu");
        new Son();
    }
}

class Farther{
    public Farther(){
        System.out.println("I am father");
    }

    public Farther(String name){
        System.out.println("I am father:"+name);
    }
}

class Son extends Farther{
    public Son(){
        System.out.println("I am son");
    }
    public Son(String name){
        //super("google");
        System.out.println("I am son:"+name);
    }
}

 Java在实例化一个对象的时候,如果没有显式使用super(),则会先调用父类的无参构造函数(不是和自己构造函数参数数量对应的那个),然后调用子类的构造函数,如果父类不是Object类,则一直向上追溯到Object类为止,super()只能在构造函数的第一行使用,在别的地方使用均为非法,一般情况下构造函数不用写super(),但是如果一个类有多个构造函数的时候,为了便于理解,往往要显式调用super()。

  上面代码的运行结果为:

I am father
I am son:baidu
I am father
I am son

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值