多态和类型转化(instanceof)

来源:互联网 发布:网眼空间绑定域名教程 编辑:程序博客网 时间:2024/06/17 16:43

Java多态性理解

  1. 多态定义:同一消息可以根据发送对象的不同而采取不同的行为方式(发送消息就是函数调用)
  2. 多态实现:动态绑定(是指在执行期间判断所引用对象的实际类型,根据其实际类型来调用其相应方法)
  3. 多态作用:消除类型之间的耦合
  4. 现实中例子:比方说按下 F1 键这个动作,如果当前在 Flash 界面下弹出的就是 AS 3 的帮助文档;如果当前在 Word 下弹出的就是 Word 帮助;在 Windows 下弹出的就是 Windows 帮助和支持。 同一个事件发生在不同的对象上会产生不同的结果

多态存在的三个必要条件

  1. 要有继承
  2. 要有重写
  3. 父类引用指向子类对象

多态性理解

  1. 指向子类的父类引用由于向上转型了,它只能访问父类中拥有的方法和属性,而对于子类中存在而父类中不存在的方法,该引用是不能使用的,尽管是重载该方法。
  2. 若子类重写了父类中的某些方法,在调用该些方法的时候,必定是使用子类中定义的这些方法(动态连接、动态调用)。

多态的实现形式

  • 基于继承实现的多态: 继承是通过重写父类的同一方法的几个不同子类来体现的
  • 基于接口实现的多态:在接口的多态中,指向接口的引用必须是指定这实现了该接口的一个类的实例程序,在运行时,根据对象引用的实际类型来执行对应的方法。

向下转型

  1. 要慎用向下转型。由于向下转型容易出问题,为此不到万不得已的时候,最好不用使用向下转型。条条道路通罗马,如果在编程之前,合理规划类,往往可以避免向下转型的发生。只有其他路走不通的情况下,才考虑通过向下转型的技术来解决问题。
  2. 在进行向下转型的时候,需要做两件事情。一是一定要使用instanceof操作符来判断转型的合法性,即判断父类对象是否为子类对象的实例
  3. 需要做好备注等注释工作。由于像向下转型等操作是容易出现问题的地方。为此在进行类似的操作时,最好在行注释或者块注释中能够进行说明。这对于后续的维护与代码的升级是很有帮助的。好记性不如烂笔头。
原创粉丝点击