在构造函数中,super()是什么意思?

3

这段代码的含义是什么?

super();

在构造函数内部做什么?

例如,这是我的类的构造函数:

public abstract class Rectangle extends AbstractShape
{

private double height, width;

// Constructors...  
public Rectangle()
{
    super(); //this is how i inherit that point!
    height = -1;
    width = -1;
}

这与超类有关吗?


4
问题表述得很清楚,然而我很惊讶他现在的问题得票数为负7票。 - finneycanhelp
@finneycanhelp:正如Nirbhay所提到的,只需进行一些研究(谷歌搜索)就可以轻松找到这个问题的答案...在我看来,这就是被踩的原因。 - home
好的。因此,将来要使用的Google关键字是:超级Java构造函数。 - finneycanhelp
4个回答

4
它调用父类的构造函数。

即使在初始化中没有添加,使用超类是否算是自我声明? - David Dimalanta
1
如果构造函数没有显式调用超类构造函数,则Java编译器会自动插入对超类无参构造函数的调用。如果超类没有无参构造函数,则会出现编译时错误。@DavidDimalanta http://docs.oracle.com/javase/tutorial/java/IandI/super.html - KyleM

3

super()是一个引用,它调用SuperClass的构造函数。 - Shubhamhackz

1

调用 super(); 显式地调用了超类构造函数,这里是 AbstractShape 的无参构造函数。如果在构造函数中没有此调用,则 Java 会为您插入一个隐式的 super();

引用 JLS, section 8.8.7

如果构造函数体不以显式构造函数调用开始,并且正在声明的构造函数不是原始类 Object 的一部分,则构造函数体隐式地以超类构造函数调用 "super();" 开始,即其直接超类的不带参数的构造函数的调用。


1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接