Java的多态性,抽象类与接口1概念.pptVIP

  • 2
  • 0
  • 约1.47万字
  • 约 68页
  • 2017-04-07 发布于湖北
  • 举报
多态的一些细节 假如两种类型之间没有继承关系,即不在继承树的同一个继承分支上,那么Java编译器不允许进行类型转换,例如: Dog dog=new Dog(); Cat cat=(Cat)dog; //编译出错,不允许把Dog引用类型转换为Cat引用类型 (2)对于一个引用类型变量,运行时Java虚拟机按照它实际引用的对象来处理。例如以下代码虽然编译可以通过,但运行时会抛出ClassCastException运行时异常: Base who=new Base(); //who引用Base类的实例 Sub s=(Sub)who; //运行时抛出ClassCastException 在运行时,子类的对象可以转换为父类类型,而父类的对象实际上无法转换为子类类型。因为通俗的讲,父类拥有的成员子类肯定也有,而子类拥有的成员父类不一定有。 多态的一些细节 假定Java虚拟机能够把子类对象转换为父类类型,那么以下代码中的sub.subMethod()方法无法执行: Base who=new Base(); //who引用Base类的实例 Sub sub=(Sub)who; //假定运行时未出错 sub.subMethod(); //sub引用变量实际上引用Base实例,而Base实例没有subMethod()方法 由此可见,在运行时,Java虚拟机无法把子类对

文档评论(0)

1亿VIP精品文档

相关文档