假设有三个类A,B和C。C扩展B和B扩展A.我们可以直接调用类A的构造方法而不调用类B的构造方法在子类C?我们可以在java中的多级继承中调用第2个子类中的超类构造函数:
1
A
回答
3
否。子类的构造函数将显式或隐式地调用其超类的构造函数之一来初始化自身。其他类的构造函数不能被调用(除了初始化不同的对象),无论这些类与要初始化的类的关系如何。
1
我不认为这是可能的。 无论如何,如果C不涉及B,而是涉及A,为什么C首先扩展B?
您也可以尝试在A中创建一些可以从A和C的构造函数中调用的受保护的方法。
如果你可以尝试描述你想要建模的东西,也许一些替代层次结构更合适。
+0
+一个用于提问者描述问题的建议。没有一个具体的例子,就不可能真正讨论问题和解决方案。 – ajb 2014-11-24 17:28:38
0
不,你虽然子类的构造函数首先开始执行(当你创建它的对象时),但在子构造函数中总是有一个无参数构造函数调用super(除非你手动调用super参数)等。遵循这个层次结构,最顶层父类的构造函数虽然最后开始执行,但是先完成!
0
不能直接..但是这样的事情可以做:
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
相关问题
- 1. 的Java:继承类构造函数调用超级
- 2. 在java中调用继承构造函数的构造函数
- 3. 从Java类继承Scala:选择要调用哪个超级构造函数
- 4. 继承和使用超类的构造函数在javascript中
- 5. 从超类继承构造函数?
- 6. 超类的Java子类构造函数
- 7. Java的继承:在超类中调用子类方法
- 8. 一个子类可以继承构造函数吗?
- 9. 调用多个超类构造函数
- 10. Java:如何调用子类构造函数内的超类构造函数?
- 11. 我们可以调用一个类的构造函数吗?
- 12. 如何从另一个继承类调用超级构造函数?
- 13. 可以子类的构造方法重载超类的构造函数? “java”
- 14. 继承类中的构造函数调用
- 15. 问题在子类构造函数中调用超类方法
- 16. Java:如何可以子类构造函数类中和父构造函数?
- 17. Java继承:在超类中调用子类方法
- 18. 当从线程继承时调用超类构造函数
- 19. 将继承构造子类的构造参数传递给继承子类
- 20. Blackberry屏幕类中的超级构造函数调用
- 21. 我可以让子类隐式继承基类构造函数吗?
- 22. Java中的继承 - 2类
- 23. 超级类Sub构造函数java
- 24. VS2005中的C#:在继承类中,是否需要显式调用超级构造函数?
- 25. 如何在内部类中调用继承的类构造函数
- 26. 我可以从父类中调用子类的构造函数吗?
- 27. 在Java构造函数中调用超级函数
- 28. 我们可以在父类中声明构造函数,并在java中的另一个类中定义它?
- 29. 在调用超类的构造函数之前解析子类中的参数
- 30. 继承虚基类的构造函数
你为什么不只是尝试,并找出? – tnw 2014-11-24 17:18:24
当然。 'new A();' – kolossus 2014-11-24 17:18:30
不,总是调用一个(可能是隐式的)超级构造函数,然后所有的字段都被初始化,剩下的部分从构造函数中执行。 – 2014-11-24 17:20:15