在这里了解多态

时间:2018-12-19 04:49:59

标签: java inheritance polymorphism

给出以下类别:

abstract public class Animal{
    abstract public void greeting();
}

public class Dog extends Animal {
    public void greeting() {
        System.out.println("Woof!");
    }
    public void greeting(Dog another) {
        System.out.println("Wooooooooof!")
    }
}

public class BigDog extends Dog {
    public void greeting() {
        System.out.println("Woow!")
    }
    public void greeting(Dog another) {
        System.out.println("Woooooooooooow!")
    }
}

之间有什么区别 Dog animal = new Dog()Animal animal = new Dog()? 因为animal.greeting()会产生完全相同的结果。

从理论上讲,我以后会创建Dog的实例,但是将其存储在超类(或此类中的抽象)中。但这真的是什么呢?自从Dog扩展到Animal以来,他们俩都将检查Animal类。在这里需要一些启发。

Animal animal = new BigDog()Dog animal = new BigDog()有什么区别? 他们最终不会检查动物类别吗?由于BigDog扩展为Dog,而Dog扩展为Animal。

请提供具体示例对此进行解释。我从理论上理解这一点,但是很难理解幕后实际发生的事情。感谢您抽出宝贵的时间阅读本文。我只懂Java,所以如果您能使用Java进行解释,我将不胜感激。

**编辑:我已经看到了重复项,但仍只触及了多态性的表面及其与抽象类的关系。请去阅读。我的问题是专门要求抽象类与常规类之间以及每个常规类之间的链接。我看不到这是怎么重复的,因为我正在询问幕后实际发生的事情:BigDog扩展了Dog,而Dog扩展了Animal。有人可以解释这里实际发生的情况,而不是像机器一样标记帖子吗?

0 个答案:

没有答案