黑马程序员技术交流社区
标题:
多态中如何使用子类特有的方法
[打印本页]
作者:
xiaoxinxin003
时间:
2015-7-12 17:44
标题:
多态中如何使用子类特有的方法
如何使用子类的特有方法:
class DuoTaiDemo
{
public static void main(String[] args){
Animal a = new Cat();//类型提升,向上转型。
a.eat();//但是不能使用子类的特有方法。
//如何使用子类特有方法呢?
//可以强制将父类的引用转换成子类类型。
Cat c = (Cat)a;//向下转型
c.CatchMouse();
//下面这种转型是不对的。我们转的是父类的引用,不可以将父类的对象转型。
//我们可以转换的是父类的引用指向的自己的子类对象时,可以被提升,也可以被强制转换。
//多态自始至终都是子类对象在变化
Animal a = new Animal();
Cat c = (Cat)a;
}
public static void function(Animal a){
a.eat();//instanceof用来判断所属类型,然后可以使用所属类型的特有方法。
if(a instanceof Cat){
Cat c = (Cat)a;
c.CatchMouse();
}
else if(a instanceof Dog){
Dog d = (Dog)a;
d.kanjia();
}
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2