Java 的多态

来源:互联网 发布:js 合计不能超过数字 编辑:程序博客网 时间:2024/05/21 14:47

复杂对象的构造函数的调用顺序是这样的:
1. 调用基类的构造函数。这是一个递归过程,因此会先创建继承体系的根,然后是下一级派生类,以此类推直到最后一个继承类的构造函数。
2. 成员对象按照其声明的顺序进行初始化。
3. 执行继承类的构造函数的正文。

对象与对象之间有可能会有依赖关系,因此清理的顺序应该与初始化的顺序相反。对数据成员而言,这就是它们的清理顺序应该与声明的顺序相反(因为数据的初始化是按照声明的顺序进行的)。对基类而言(它采用了C+拆构函数的形式),你应该先进行派生类的清理,再进行基类的清理。这是因为派生类的清理可能需要调用某些基类的方法,也就是说要留着基类,因此它不能过早地被清除掉。

一个好的构造函数应该,“用最少的工作量把对象的状态设置好,而且要尽可能地避免去调用方法。”构造函数唯一能安全调用的方法,就是基类的final 方法。(这一条也适用private 方法,因为它自动就是final 的。)它们不会被覆写,因此也不会产生这种意外的行为。

原创粉丝点击