9.Java中的多态

多态

9.2转机
9.2.1方法调用绑定

Java中除了staticfinal方法(private方法也是隐式的final)外,其他所有方法都是后期绑定。

9.2.5陷阱:属性与静态方法

只有普通的方法调用可以是多态的。例如,如果直接访问一个属性,该访问会在编译时解析。如果一个方法是静态的,它的行为就不具有多态性。

9.3构造器和多态
9.3.1构造器调用顺序

在派生类的构造过程中总会调用基类的构造器。初始化会自动按继承层次结构上移,因此每个基类的构造器都会被调用。这么做是有意义的,因为构造器有着特殊的任务:检查对象是否被正确地构造。由于属性通常声明为private,必须假定派生类只能访问自己的成员而不能访问基类的成员。只有基类的构造器拥有恰当的知识和权限来初始化自身的元素。因此,必须得调用所有构造器;否则,就不能构造完整的对象。
在构造器中必须确保所有的成员都已经构建完。唯一能保证这点的方法就是首先调用基类的构造器。接着,在派生类的构造器中,所有可以访问的基类成员都已经初始化。

9.3.2继承和清理

销毁的顺序应该与初始化的顺序相反,以防一个对象依赖另一个对象。对于属性来说,就意味着与声明的顺序相反(因为属性是按照声明的顺序初始化的)。对于基类,首先进行派生类的清理工作,然后才是基类的清理。这是因为派生类的清理可能调用基类的一些方法,所以基类组件这时得存活,不能过早地被销毁。
一旦某个成员对象被其它一个或多个对象共享时,问题就变得复杂了,可以使用引用计数来跟踪仍然访问着共享对象的对象数量。

9.4协变返回类型

派生类的被重写方法可以返回基类方法返回类型的派生类型。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值