【发布时间】:2014-10-08 18:52:37
【问题描述】:
我一直认为,在创建带有子类的对象时,需要显式使用super(arguments list)来调用超类的构造函数。然而我做了一个实验,发现即使没有使用super(),超类的构造函数也会被自动调用。这是真的?
如果这是真的,super() 什么时候是多余的,什么时候不是?
class Parent
{
public Parent()
{
System.out.println("Super Class");
}
}
class Child extends Parent
{
public Child()
{
super(); //Is this redundant?
System.out.println("Sub Class");
}
}
public class TestClass
{
public static void main(String[] args)
{
new Child();
}
}
输出(与 super(); 在子类中):
Super Class
Sub Class
输出(在子类中没有super();):
Super Class
Sub Class
【问题讨论】:
-
即使你不打电话也隐藏着超级存在
-
在需要传递参数的时候必须调用super()构造函数,否则如果不调用,就会隐式调用不带参数的super()。
-
那么我们在超类的构造函数中有参数的时候显式调用?