多态向上转型,向下转型

Posted 奥雷迪尔

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多态向上转型,向下转型相关的知识,希望对你有一定的参考价值。

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  

以上是关于多态向上转型,向下转型的主要内容,如果未能解决你的问题,请参考以下文章

多态向上转型,向下转型

多态向上转型向下转型instanceof 运算符

多态向上转型向下转型

java 多态二

多态向上转型和向下转型

多态的向上转型和向下转型 2016.12.8