java之⽗类中的构造器是否能被⼦类继承?
⼦类默认继承⽗类的属性和⽅法,但不会继承⽗类的构造器,⽽是在⼦类被实例化时会默认调⽤⽗类的空构造器。⼦类在创建的时候会调⽤⾃⼰的空构造器,并在空构造器会隐式调⽤super(),即⽗类的空构造器。如果⽗类的构造器被重载,那么⼦类中的构造器也必须初始化⽗类的构造器,否则会报编译错误。当然,只要⽗类中显⽰定义了空构造器,⼦类中就不必初始化⽗类的构造器。例如:
⽗类Person.java
package myjava;
public class Person {
private String name;
private int age;
构造函数可以被重载public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return this.age;
}
public Person(String name) {
this.name = name;
}
}
⼦类:Student.java
package myjava;
public class Student extends Person{
//这⾥必须初始化⽗类重载后的构造⽅法,否则会报错
public Student(String name) {
super(name);
}
}
Test.java
package myjava;
public class Test {
public static void main(String[] args) {
Person p = new Person("tom");
Student stu = new Student("jack");
String personName = p.getName();
String studentName = Name();
System.out.println(personName);
System.out.println(studentName);
}
输出:
tom
jack
说明:此时⽗类中没有显⽰定义空构造器,只有⼀个重载了的构造器,在⼦类构造器中,必须初始化⽗类的构造器,即super关键字+⽗类构造器中的参数。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论