为什么要用父类引用指向子类对象?与什么用处?

来源:10-3 Java 中的抽象类

Ngu_smy

2015-08-09 11:06

Telphone tel = new CellPone();

写回答 关注

2回答

  • AAnonymous
    2015-08-09 12:44:57
    已采纳

    这就是多态

    父类引用变量引用子类时可以调用子类覆盖的方法。

    举个例子:

    假设有类Cat,类Dog,类Duck。。。他们都有一个继承自父类Animal的方法eat(),各自覆盖了这个方法,因为猫狗鸭吃相不同

    现在。我有另一类,里面有个方法处理各种动物的吃相all_eat()

    当然你可以这么写

    // 给每个类型都定义一个对象的引用
    // 需要用到某个类型时给其创建对象
    public Cat cat = null;
    public Dog dog = null;
    public Duck ducl = null;
    public void all_eat(){
        if(cat!=null){
            cat.eat();
        }
        if(dog!=null){
            dog.eat();
        }
        if(duck!=null){
            duc.eat();
        }
    }

    这样写是不是比较麻烦,如果类型有十几个甚至更多呢

    所以用多态可以这么写

    public void all_eat(Animal animal){
        // 你可以把 Cat, Dog, Duck 任意一个的对象作为参数传进来
        // 因为他们都是Animal的子类,并且接下来animal.eat()会
        // 根据实际对象的类型去调用相应的eat()方法。这就是多态
        animal.eat();
    }


    Ngu_sm...

    非常感谢!

    2015-08-09 18:07:27

    共 1 条回复 >

  • qq_白玉_1
    2018-04-02 17:38:59

    解释的很清楚,学习了,谢谢大佬

Java入门第二季 升级版

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

530636 学习 · 6091 问题

查看课程

相似问题