[英]Is there anyway in JAVA to execute Sub Class's Constructor before the Super Class's Constructor?
class Super
{
Super()
{
System.out.println("This is Super Constructor");
}
}
class Sub extends Super
{
Sub()
{
//super() is automatically added by the compiler here!
System.out.println("This is Sub Constructor");
//super(); I can't define it here coz it needs to be the first statement!
}
}
class Test
{
public static void main(String...args)
{
Sub s2=new Sub();
}
}
输出:
这是超级构造函数
这是子构造函数
反正这样做吗?
还是您不能在Super()之前访问Sub()?
我知道超级类或继承的类首先被初始化,然后是子类,仅出于学习目的而这样做!
在构造函数中,如果您自己未提供此调用,则编译器将始终为您添加对super()
的调用。
如果使用反编译器,则Sub构造函数将如下所示:
Sub()
{
super();
System.out.println("This is Sub Constructor");
}
所以不,这是不可能的。
它将始终始终先调用基类的构造函数(parent),然后再调用发起的类(child)。 在您的情况下, super()
将首先执行。
好读: 父或子构造函数是第一个执行的?
正如其他答案所说的那样。 不确定为什么要这样做,但最好重新考虑一下实现,因为您总是希望确保继承的字段首先被初始化,因为子类实现可能依赖于它。
如前所述,超级构造函数总是被调用。 也许您应该重写您的问题并说明原因。
这是一个简单的答案。 继承的概念是关于IS-A关系的。 因此从技术上讲,Dog类是Animal Class的孩子。 。 。 创建对象后,Dog类首先是一种动物,然后才被归类为DOG
...希望这样可以弄清楚事情。 。 所以不可能按照你的要求去做
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.