Java多态

  1. 多态是面向对象编程语言中,继数据抽象和继承之外的第三个重要特性。
  2. 封装通过合并特征和行为来创建新的数据类型。隐藏实现通过将细节私有化把接口与实现分离。 而多态是消除类型之间的耦合。继承允许把一个对象视为它本身的类型或它的基类类型。这样就能把很多派生自一个基类的类型当作同一类型处理,因而一段代码就可以无差别地运行在所有不同的类型上了。多态方法调用允许一种类型表现出与相似类型的区别,只要这些类型派生自一个基类。
  3. 多态(也称为动态绑定或后期绑定或运行时绑定)。
  4. 将一个方法调用和一个方法主体关联起来称作绑定。若绑定发生在程序运行前(如果有的话,由编译器和链接器实现),叫做前期绑定。
  5. 后期绑定,意味着在运行时根据对象的类型进行绑定。后期绑定也称 为动态绑定或运行时绑定。
  6. Java 中除了 static 和 final 方法(private 方法也是隐式的 final)外,其他所有方法都是后期绑定。
  7. 一旦当你知道 Java 中所有方法都是通过后期绑定来实现多态时,就可以编写只与基类打交道的代码,而且代码对于派生类来说都能正常地工作。
  8. 应用多态的程序是可扩展的,因为可以从通用的基类派生出新的数据类型,从而添加新的功能。那些操纵基类接口的方法不需要改动就可以应用于新类。
  9. 派生类不能覆写私有方法。private 方法是 final 的,对于派生类来说 是隐蔽的。如果使用了 @Override 注解,就能检测出问题
  10. 只有普通的方法调用可以是多态的,静态方法不可以。
  11. 构造器不具有 多态性(它们实际上是静态方法,但是隐式声明的)
  12. 在派生类的构造过程中总会调用基类的构造器。初始化会自动按继承层次结构上 移,因此每个基类的构造器都会被调用到。
  13. 当使用继承时,就已经知道了基类的一切,并可以访问 基类中任意 public 和 protected 的成员。这意味着在派生类中可以假定所有的基类成 员都是有效的。在构造器中必须确保所有的成员都已经构建完。唯一能保证这点的方法就是首先 调用基类的构造器。接着,在派生类的构造器中,所有你可以访问的基类成员都已经初 始化。
  14. 如果你存在清理问题,那么必须用心地为新类创建一个 dispose() 方 法(这里用的是我选择的名称,你可以使用更好的名称)。由于继承,如果有其他特殊 的清理工作的话,就必须在派生类中覆写 dispose() 方法。当覆写 dispose() 方法时, 记得调用基类的 dispose() 方法,否则基类的清理工作不会发生。
  15. 销毁的顺序应该与初始化的顺序相反,以防一个对象依赖另一个对象。
  16. 如果在构造器中调用了动态绑定方法,就会用到那个方法的覆写定义。
  17. 编写构造器有一条良好规范:做尽量少的事让对象进入良好状态。如果有 可能的话,尽量不要调用类中的任何方法。在构造器中唯一能安全调用的只有基类的 final 方法(包括 private 方法,它们自动属于 final)。这些方法不能被覆写,因此不 会产生意想不到的结果
  18. 协变返回类型,这表示派生类的被覆写方法可以返回基类方法返回类型的派生类型
  19. 更好的方法是首先选择组合,特别是不知道该使用哪种方法时。组合不会强制设计 是继承层次结构,而且组合更加灵活,因为可以动态地选择类型(因而选择相应的行 为),而继承要求必须在编译时知道确切类型。
  20. 在面向对象编程中,我们持有从基类继承而来的相同接口和使用该接口的不同形式:不同版本的动态绑定方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值