码迷,mamicode.com
首页 > 其他好文 > 详细

多态向上转型,向下转型

时间:2017-07-10 22:07:36      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:ble   nes   print   向下转型   end   .net   父类   sys   类类型   

abstract class Animal{
abstract void eat();
}
class Cat extends Animal{
void eat(){
System.out.println("eat fish");
}
void catchMouse(){
System.out.println("catchMouse");
}
}
class Dog extends Animal{
void eat(){
System.out.println("eat bone");
}
void Kanjia(){
System.out.println("bark");
}
}
public 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;错的
function(new Cat());
function(new Dog());
}
public static void function(Animal a){
a.eat();
if(a instanceof Cat){
Cat c=(Cat)a;
c.catchMouse();
}
else if(a instanceof Dog){
Dog d=(Dog)a;
d.Kanjia();
 
}
}
 
}
 
 
运行结果:

 
  1. eat fish  
  2. catchMouse  
  3. eat bone  
  4. bark  

多态向上转型,向下转型

标签:ble   nes   print   向下转型   end   .net   父类   sys   类类型   

原文地址:http://www.cnblogs.com/xiaoshuaidiboke/p/7147371.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!