java super父类方法_java super关键字,super调用父类构造方法详解

因为子类不可以继承父类的构造方法,所以,想要调用父类的构造方法的话,那么就可以使用得到super关键字下面的话就来对这个方面做一下详细的讲解。

super关键字能够用来访问父类的构造方法、普通方法和属性。

super关键字功能:

super调用父类构造方法

super关键字可以在子类的构造方法中显式地调用父类的构造方法。

下面是基本格式:(parameter-list 指定了父类构造方法中的所有参数,super( )必须是在子类构造方法的方法体的第一行)super(parameter-list);

示例:

声明父类Person和子类Student,在Person类中定义一个带有参数的构造方法。public class Person

{

public Person(String name)

{}

}

public class Student extends Person

{}

会发现Student类出现编译错误,提示必须显式定义构造方法。(错误信息):Implicit super constructor Person() is undefined for default constructor. Must define an explicit constructor

JVM默认给Student类加了一个无参构造方法,而在这个方法中默认调用了super(),但是Person类中并不存在该构造方法,所以会编译错误。

假如,一个类中没有写任何的构造方法,JVM会生成一个默认的无参构造方法。

在继承关系中,因为,在子类的构造方法中,第一条语句默认为调用父类的无参构造方法(即默认为 super(),一般这行代码省略了)。

所以当在父类中定义了有参构造方法,但是没有定义无参构造方法时,编译器会强制要求我们定义一个相同参数类型的构造方法。

示例:

声明父类Person,类中定义两个构造方法:public class Person

{

public Person(String name, int age)

{}

public Person(String name, int age, String sex)

{}

}

子类Student继承了Person类,使用super语句来定义Student类的构造方法:public class Student extends Person

{

public Student(String name, int age, String birth)

{

super(name, age); // 调用父类中含有2个参数的构造方法

}

public Student(String name, int age, String sex, String birth)

{

super(name, age, sex); // 调用父类中含有3个参数的构造方法

}

}

Student类构造方法代码可以看出,super可以用来直接调用父类中的构造方法,使编写代码也更加简洁方便。

编译器会自动在子类构造方法的第一句加上super();来调用父类的无参构造方法,必须写在子类构造方法的第一句,也可以省略不写。

通过super来调用父类其它构造方法时,只需要把相应的参数传过去。

更多java基础知识,请继续通过本站来进行了解和学习吧。

推荐阅读:

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值