在Head First In Java的构造器与垃圾收集器这一章的父类的构造函数在对象的生命中所扮演的角色这一小节中,有这样一段话:
在构造函数中使用super()调用父类的构造函数的部分,要记得子类可能会根据父类的状态来继承方法。完整的对象需要也是完整的父类核心,这也是为什么父类构造函数必须执行的原因。就算Animal上有些变量时Hippo不会用到的,但是Hippo可能会用到某些继承下来的方法必须读取Animal的实例变量。
怎样理解完整的对象需要也是完整的父类核心?
还有:这也是为什么父类构造函数必须执行的原因。看完也不明白为什么父类构造函数必须执行的原因。。?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
这样理解:
Java的继承是一个"is-a"的概念,也就是说子类就是父类(但父类不是子类)。子类默认继承了父类所有可继承的元素,唯独不能继承父类的构造函数(因为:Java的构造函数名就是类名,但Java的方法继承是采用重名机制,故而子类永远不能继承父类的构造函数)。所以在构造子类时,必须先执行父类的构造函数,无论是显式地执行还是隐式地执行。