我有一个扩展类“ParentClass”的类“ChildClass”。我不想完全替换父类的构造函数,而是先调用父类的构造函数,然后再做一些额外的工作。在Java的子类中使用父构造函数
我相信默认情况下调用父类的0参数构造函数。这不是我想要的。我需要用参数调用构造函数。这可能吗?
我试图
this = (ChildClass) (new ParentClass(someArgument));
但是,这并不工作,因为你不能修改“本”。
我有一个扩展类“ParentClass”的类“ChildClass”。我不想完全替换父类的构造函数,而是先调用父类的构造函数,然后再做一些额外的工作。在Java的子类中使用父构造函数
我相信默认情况下调用父类的0参数构造函数。这不是我想要的。我需要用参数调用构造函数。这可能吗?
我试图
this = (ChildClass) (new ParentClass(someArgument));
但是,这并不工作,因为你不能修改“本”。
你可以在子的构造函数中用“super”引用父类的构造函数。
public class Child extends Parent {
public Child(int someArg) {
super(someArg);
// other stuff
}
// ....
}
啊哈,谢谢。我真的应该阅读我编写的Java编程书,它会阻止我问这样的愚蠢问题。 –
使用super()对父进程构造函数的调用需要是您的子构造函数中的第一次调用。 – bakoyaro
您应该使用super关键字。
public ChildClass(...) {
super(...);
}
来调用特定的父类的构造函数,把super(param1, param2, ...)
作为儿童类的构造函数体的第一条语句。在Java中是
['super'](http://download.oracle.com/javase/tutorial/java/IandI/super.html)。 – birryree
检查此解决方案:http://leepoint.net/notes-java/oop/constructors/constructor-super-example.html – Raihan