所以我理解super()
调用父类的构造函数并且我已经多次使用它。但是,我从未在子类的构造函数之外使用它。是否可以super()
从子类构造函数外部调用?既然super
只有附加到派生类时才有意义,那么是否可以将其视为派生类的成员函数?我最初在尝试使用对象调用 super 时遇到了这个问题(只是在试验)。
有可能做这样的事情吗?
class Animal {
Animal() {
System.out.println("Animal's constructor was called.");
}
}
class Puppy extends Animal {
Puppy() {
System.out.println("Puppy's constructor was called.");
}
}
public class Test {
public static void main(String[] args) {
Puppy pupper = new Puppy();
pupper.super();
}
}
不,这是不可能的,不是在构造函数体之外。
在Java语言规范§8.8.7.1说的情况如下:
ExplicitConstructorInvocation: [TypeArguments] this ( [ArgumentList] ) ; [TypeArguments] super ( [ArgumentList] ) ; ExpressionName . [TypeArguments] super ( [ArgumentList] ) ; Primary . [TypeArguments] super ( [ArgumentList] ) ;
在这里,在构造函数体(第 8.8.7 节)中,super()
是允许的,但在其他地方是不允许的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句