多态中的上下转型

2021/10/13 23:17:47

本文主要是介绍多态中的上下转型,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

向上转型

  从子类到父类

   父类引用指向子类对象

向下转型

  从父类到子类

  父类引用转为子类对象

public class Animal {
    public void eat() {
        System.out.println("动物吃东西");
    }
}
public class Cat extends Animal{
    public void eat() {
        System.out.println("猫吃鱼");
    }
    public void playGame() {
        System.out.println("猫玩捉迷藏");
    }
}
public class AnimalDeom {
    public static void main(String[] args) {
        //上转型
        Animal a = new Cat();
        a.eat();
//        a.playGame(); 向上转型的父类对象中必须和子类有共同的方法
        Cat c = new Cat();
        c.playGame();

        //下转型
        Cat s = (Cat)a;
        s.playGame();
        s.eat();
    }
}

这几段代码不难理解,但需要着重注意上转型和下转型几个关键语句:

上转型:

Animal a = new Cat(); 
Animal 类的对象a,后面是开辟了一个空间Cat,从多态的概念上理解就是说,Cat有属于自己的属性和行为(Cat里面有两个行为(方法)),它可以用自己的类创建对象,这样所创建对象的属性和行为都是自己类里面的,
但是它也可以通过父类来创建对象,这里的Animal相当于动物类,就是Cat既有属于自己的属性,也有属于动物的属性,当它用动物类创建对象后,便失去了自己独有的属性,这也就是为什么编译不出a.playGame();

下转型:
 Cat s = (Cat)a;
左边是子类对象Cat,后面s相当于变量名,后面的相当于把父类对象给强制转换成子类对象。



这篇关于多态中的上下转型的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程