在Head First In Java的构造器与垃圾收集器这一章的父类的构造函数在对象的生命中所扮演的角色这一小节中,有这样一段话:
在构造函数中使用super()调用父类的构造函数的部分,要记得子类可能会根据父类的状态来继承方法。完整的对象需要也是完整的父类核心,这也是为什么父类构造函数必须执行的原因。就算Animal上有些变量时Hippo不会用到的,但是Hippo可能会用到某些继承下来的方法必须读取Animal的实例变量。
怎样理解完整的对象需要也是完整的父类核心?
还有:这也是为什么父类构造函数必须执行的原因。看完也不明白为什么父类构造函数必须执行的原因。。?
求解。:)
这样理解:
Java的继承是一个"is-a"的概念,也就是说子类就是父类(但父类不是子类)。子类默认继承了父类所有可继承的元素,唯独不能继承父类的构造函数(因为:Java的构造函数名就是类名,但Java的方法继承是采用重名机制,故而子类永远不能继承父类的构造函数)。所以在构造子类时,必须先执行父类的构造函数,无论是显式地执行还是隐式地执行。