【发布时间】:2015-06-21 18:23:27
【问题描述】:
我正面临一件奇怪的事情。 Java 理论说 *a 子类不从其超类继承任何构造函数,它必须提供自己的构造函数。 尽管如此,我编写了一个程序,它的主类从子类生成一个没有参数的对象(默认构造函数),而在这个子类中不存在任何构造函数。此外,该对象已初始化其超类的属性。这意味着超类已经将其构造函数继承给了子类……理论上这是错误的。
import java.util.Scanner;
public class Test {
public static void main(String[] args){
Student S = new Student();
System.out.println(S);
}
}
public class Person {
private String name="Scarlett";
public String getName(){
return name;
}
}
public class Student extends Person {
private String name="Johansson";
/* THIS IS MISSING BUT STILL WORKING
Student(){
super();
}
*/
@Override
public String toString(){
return "Name is "+getName()+" Surname is "+ this.name;
}
}
以及这段代码的输出:
run:
Name is Scarlett Surname is Johansson
BUILD SUCCESSFUL (total time: 1 second)
【问题讨论】:
-
它没有继承任何东西。您没有为
Student显式声明任何构造函数,因此编译器提供了一个默认的零参数构造函数。
标签: java inheritance constructor subclass