Thinking in Java Study(07)

多态

面向对象的程序设计语言的特征,抽象、继承、多态。

多态分离“做什么”和“怎么做”,将接口与实现分离。作用:不但能够改善代码的组织结构和可读性,还能够创建“可扩展的”程序。(动态邦定,后期邦定,运行时邦定)

1.  向上转型

前面的章节已经介绍,继承自基类的子类可以自动转化为基类的对象,可以接受所有发送给基类的消息。

2.  忘记对象类型

在编写方法时可以完全忘记对象的类型,而采用基类的类型作为参数。其会自动的认出传入的是什么类型的对象,从而调用相应的方法。

3.  方法调用绑定

方法绑定就是将一个方法调用和一个方法主体关联起来。

若在程序执行前进行邦定叫做前期绑定,C语言的编译器采用这种方法

在运行时根据对象的类型进行绑定叫做后期绑定,Java除了staticfinal方法外其他方法都是后期绑定。

4.  产生正确的行为

Shape的例子,编译器能做出正确的判断知道应该调用那个类型的方法。

5.  Private方法的重载

只有非private方法才可以被重载,在导出中虽然可以写一个和基类的private方法同名的方法,但其并不是基类方法的重载而是子类一个全新的方法。

6.  抽象类和抽象方法

使用abstract关键字修饰,包含抽象方法的类必为抽象类,导出类必须实现抽象的方法。抽象类不能产生对象。

7.  构造器和多态

构造器的初始化顺序,递归的调用基类的构造器,然后按声明顺序初始化导出类的成员,然后是导出类的构造器。

8.  继承与清除

与初始化的顺序刚好相反。清除时子类的dispose方法要显式的调用基类的dispose方法,super.dispose()

9.  构造器内部的多态行为

构造器初始化的顺序,第一先将所有分配给对象的初始化空间置为二进制的零。构造器中调用方法可能会访问没有完全初始化的对象。

“用尽可能简单的方法是对象进入正常状态;如果可以的话,避免调用其它方法”在构造器内部唯一能够安全调用的方法是基类中的final方法。

10.              用继承进行设计

当我们使用现成类来建立新类时,首先选择“组合”,尤其是当你自己不能十分确定应该使用哪一种方式时。组合更加灵活,因为它可以动态选择类型,相反,继承在编译期间就需要知道确切的类型。

“用继承表达行为间的差异,用属性表达状态上的变化”继承重载方法

11.              向下转型

RTTI类型检测,会自动检测能否向下转型,如果不能抛出ClassCastException异常

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值