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
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值