黑马程序员技术交流社区

标题: 多态中如何使用子类特有的方法 [打印本页]

作者: xiaoxinxin003    时间: 2015-7-12 17:44
标题: 多态中如何使用子类特有的方法
如何使用子类的特有方法:
  1. class DuoTaiDemo
  2. {
  3.         public static void main(String[] args){
  4.                 Animal a = new Cat();//类型提升,向上转型。
  5.                 a.eat();//但是不能使用子类的特有方法。
  6.                 //如何使用子类特有方法呢?
  7.                 //可以强制将父类的引用转换成子类类型。
  8.                 Cat c = (Cat)a;//向下转型
  9.                 c.CatchMouse();
  10.                 //下面这种转型是不对的。我们转的是父类的引用,不可以将父类的对象转型。
  11.                 //我们可以转换的是父类的引用指向的自己的子类对象时,可以被提升,也可以被强制转换。
  12.                 //多态自始至终都是子类对象在变化
  13.                 Animal a = new Animal();
  14.                 Cat  c = (Cat)a;
  15.         }
  16.         public static void function(Animal a){
  17.                 a.eat();//instanceof用来判断所属类型,然后可以使用所属类型的特有方法。
  18.                 if(a instanceof Cat){
  19.                         Cat c = (Cat)a;
  20.                         c.CatchMouse();
  21.                 }
  22.                 else if(a instanceof Dog){
  23.                         Dog d = (Dog)a;
  24.                         d.kanjia();
  25.                 }
  26.         }
  27. }
复制代码









欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2