我有一个Child
类,它扩展了Parent
类。
类Parent
是一个抽象类。
在一个类ChildTest
中,我想调用父类的构造函数,如下所示:
public void methodInChildTest(){
Child c = new Child();
c.super();
}
c.super()
是抽象父类的构造函数。
这有可能吗?如果是这样,我该怎么办?
答案 0 :(得分:4)
不。 super
方法只能作为构造函数中的第一条语句来调用。
答案 1 :(得分:0)
当未按字面定义时,当您调用new Child()时,Parent无参数构造函数将作为Child构造函数中的第一个执行对象被调用。 除了从Child构造函数中调用子类构造函数,没有其他方法。
答案 2 :(得分:0)
不,您不能使用带有参数的super()
,它只能作为类构造函数中的第一个命令来调用。
这些JLS点可能有助于更好地理解:
ExplicitConstructorInvocationopt
开始。ConstructorBody: { ExplicitConstructorInvocationopt BlockStatementsopt }
ExplicitConstructorInvocation
的构造,包括super()
通话):ExplicitConstructorInvocation: NonWildTypeArgumentsopt this ( ArgumentListopt ) ; NonWildTypeArgumentsopt super ( ArgumentListopt ) ; Primary . NonWildTypeArgumentsopt super ( ArgumentListopt ) ;
答案 3 :(得分:0)
简短的答案是:不,您不能。 super
仅适用于扩展父类的构造函数。您可能需要看一下Oracle的解释:https://docs.oracle.com/javase/tutorial/java/IandI/super.html
答案 4 :(得分:0)
super ()
只能在该类的构造方法中调用。
public class Child extends SomeClass{
public Child(){
super();
}
}