java中super修饰构造器

Java中,子类构造器默认会调用父类的无参构造器,super()可以显式指定调用父类的构造器。在构造器中,super调用必须作为第一行,this调用子类构造器也同理。同时,一个构造器里只能有一个super或this调用,不能同时存在。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

空构造器中都存在一个隐藏的super(),用于调用父类的空构造器。

public class Student extends Person{
    double store;
    public  Student(){
        super();//可以不写
    }
}
public class Person {
    int age;
    String name;
    public Person(){
        super();
    }

}

Person空构造器调的是Object。

super调用父类带参数的构造器

//父类代码
public class Person {
    int age;
    String name;
    public Person(){
        super();
    }
    public Person(int age,String name){
        this.age = age;
        this.name = name;
    }

}
//子类
public class Student extends Person{
    double store;
    public  Student(){
        super();//可以不写
    }
    public Student(double store){
        this.store = store;
    }
    public Student(double store,int age,String name){
        this.store = store;
        super(age, name);
    }
}

Student类中的带参数构造器调用Person类中的带参构造器super(age,name);

上面的代码有个错误!

super(age,name)要放在方法的第一行。跟this调用构造器类似。

正确代码如下:

  public Student(double store,int age,String name){
        super(age, name);
        this.store = store;
    }

构造器中如果使用了super调用父类构造器后,不分配super()

在构造器中, super调用父类构造器和this调用子类构造器只能存在其中一个,不能共存。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值