繁体   English   中英

我们可以在Java多级继承中从第二个子类调用超类构造函数吗

[英]Can we call a super class constructor from 2nd sub class in multilevel inheritance in java

假设有三个类A,B和C。C扩展了B,B扩展了A。我们可以直接调用A类构造函数而不在子类C中调用B类构造函数吗?

否。子类的构造函数将显式或隐式调用其超类的构造函数之一来初始化自身。 无论这些类与要初始化的类之间的关系如何,都不能调用其他类的构造函数(初始化不同的对象除外)。

我认为那是不可能的。 无论如何,如果C与B不相关,而与A相关,为什么C首先扩展B?

您也可以尝试在A中创建一些可以从A和C的构造函数调用的受保护方法。

如果您可以尝试描述要建模的内容,则也许可以使用其他替代层次结构。

不,您不能,尽管子类的构造函数首先开始执行(在创建其对象时),但是在子类的构造函数中始终存在对super的no-arg构造函数调用(除非您手动使用参数调用super),因此上。 按照此层次结构,最顶层父类的构造函数虽然最后开始执行,但首先完成!

不是直接..但是可以这样做:

public class A {
   A(){
   ....
   }
}

public class B extends A {
   B(){
   super();
   ....
   }
}

public class C extends B {
   C(){
   super();
   ....
   }
}

// In main()
C c = new C(); // This will eventually call A's constructor

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM