结论
先说结论:
- 子类的构造器中默认调用父类的无参构造器(默认在子类构造器中的第一行;以此来维持继承关系),显式调用的话必须写在子类构造器中的第一行。
- 如果父类中只有有参构造的话,很可能会在子类构造器中报错(因为无法隐式地调用父类的无参构造器了),这时候可以有两种方法:在父类中写上无参构造 或者 在子类构造器的第一行显式地调用父类的有参构造器。
//Student.java
public class Student extends Person{
private String name = "Feng";
public Student(){
System.out.println("子类的无参执行了");
}
}
class Person {
private String name = "NOName";
public Person(){
System.out.println("父类的无参执行了")
}
}
//Test.java
public Test{
public static void main(String[] args){
Student s = new Student();
}
}
题目
class Person {
String name = "No name";
public Person(String nm) {
name = nm;
}
}
class Employee extends Person {
String empID = "0000";
public Employee(String id) {
empID = id;
}
}
public class Test {
public static void main(String args[]) {
Employee e = new Employee("123");
System.out.println(e.empID);
}
}