2011-11-08 52 views
22

我有一个扩展类“ParentClass”的类“ChildClass”。我不想完全替换父类的构造函数,而是先调用父类的构造函数,然后再做一些额外的工作。在Java的子类中使用父构造函数

我相信默认情况下调用父类的0参数构造函数。这不是我想要的。我需要用参数调用构造函数。这可能吗?

我试图

this = (ChildClass) (new ParentClass(someArgument)); 

但是,这并不工作,因为你不能修改“本”。

+2

['super'](http://download.oracle.com/javase/tutorial/java/IandI/super.html)。 – birryree

+0

检查此解决方案:http://leepoint.net/notes-java/oop/constructors/constructor-super-example.html – Raihan

回答

48

你可以在子的构造函数中用“super”引用父类的构造函数。

public class Child extends Parent { 
    public Child(int someArg) { 
     super(someArg); 
     // other stuff 
    } 
    // .... 
} 
+2

啊哈,谢谢。我真的应该阅读我编写的Java编程书,它会阻止我问这样的愚蠢问题。 –

+6

使用super()对父进程构造函数的调用需要是您的子构造函数中的第一次调用。 – bakoyaro

5

您应该使用super关键字。

public ChildClass(...) { 
    super(...); 
} 
9

来调用特定的父类的构造函数,把super(param1, param2, ...)作为儿童类的构造函数体的第一条语句。在Java中是

相关问题