如果某个类没有提供任何构造函数,编译器将提供一个默认构造函数,该构造函数又调用超类的无参数。为什么要调用超类的无参数构造函数?调用超类的参数构造函数
0
A
回答
4
要初始化超(继承)该类别的一部分
2
这样就可以初始化超类的属性,以及。
1
是否有意义的对象的构造函数只有部分构造对象?
0
它是子类实例与其超类的“is-a”关系的一部分。如果SpottedFoo
是Foo
的子类(例如,每个SpottedFoo
“是-a”Foo
),则应当调用Foo
构造函数。
否则,如果由Foo
构造函数执行的初始化(私有或不是)被跳过,那么SpottedFoo
不能保证它可以像Foo
那样操作。
这是实现继承协议的一部分:每个子类实例必须能够像其超类的任何其他成员一样行事。这是Liskov substitution principle.
相关问题
- 1. Scala:调用超类的构造函数
- 2. C++调用具有计算参数的超类构造函数
- 3. 调用多个超类构造函数
- 4. 无参数构造函数调用2参数构造函数
- 5. Java:如何调用子类构造函数内的超类构造函数?
- 6. 构造函数调用具有参数的构造函数
- 7. 参数类构造函数
- 8. 在调用超类的构造函数之前解析子类中的参数
- 9. 从参数化构造函数调用默认构造函数
- 10. 从C#中的参数化构造函数调用无参数构造函数?
- 11. 使用Closure作为超类构造函数的参数
- 12. 使用超类的构造函数?
- 13. 从不同类的构造函数调用构造函数
- 14. Java构造函数超级参数
- 15. 反思 - 调用构造函数参数
- 16. 超类的Java子类构造函数
- 17. Python调用超级构造函数
- 18. 在C调用超级构造函数#
- 19. 调用超类构造函数的子类方法
- 20. 调用超类构造函数的子类方法
- 21. 子类调用超类的构造函数
- 22. 在父构造函数之前调用子类构造函数
- 23. Move构造函数调用基类移动构造函数
- 24. 没有参数的构造函数或参数构造函数
- 25. 如何拦截超类的构造函数参数?
- 26. 使用反射覆盖超类构造函数与基类构造函数
- 27. 获取类的构造函数参数
- 28. 问题在子类构造函数中调用超类方法
- 29. C++:调用基类的构造函数与计算参数
- 30. 匿名类的构造函数调用可以有参数
你的第一句话并不完全准确。编译器将只**提供一个默认的无参数构造函数**如果你自己没有提供任何构造函数**。只要添加构造函数,无论它接受多少个参数,默认的no-arguments构造函数都不会由编译器生成。 – ivantod 2011-12-20 18:00:23
@ivantod我同意你的意见....我已经纠正了它.. – Rekha 2011-12-20 18:01:42
也为了安全,如果超级类没有没有参数构造函数呢? – Stefan 2011-12-20 18:51:34