从子类外部调用超级方法

时间:2019-06-18 14:00:45

标签: java

我有一个Child类,它扩展了Parent类。

Parent是一个抽象类。

在一个类ChildTest中,我想调用父类的构造函数,如下所示:

public void methodInChildTest(){
    Child c = new Child();
    c.super();
}

c.super()是抽象父类的构造函数。

这有可能吗?如果是这样,我该怎么办?

5 个答案:

答案 0 :(得分:4)

不。 super方法只能作为构造函数中的第一条语句来调用。

答案 1 :(得分:0)

当未按字面定义时,当您调用new Child()时,Parent无参数构造函数将作为Child构造函数中的第一个执行对象被调用。 除了从Child构造函数中调用子类构造函数,没有其他方法。

答案 2 :(得分:0)

不,您不能使用带有参数的super(),它只能作为类构造函数中的第一个命令来调用。

这些JLS点可能有助于更好地理解:

    ConstructorBody:
        { ExplicitConstructorInvocationopt BlockStatementsopt }
    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();
    }
}