【发布时间】:2015-03-01 22:47:04
【问题描述】:
但是,如果超类有一个抽象方法,并且该方法在它的子类中实现,这是具体的,我们仍然可以使用超类的 Object 调用子类的方法实现。
怎么会?
对于重载方法也是如此,即使您使用超类的引用来调用子类的实现,也会调用它。
让我在这里更具体...
假设 Animal 是一个超类,而 Dog 是一个子类。 现在,我愿意:
Animal a = new Dog();
这意味着 a 是对动物类的引用,对吧?
现在,如果我这样做,a.function(); (假设该函数在 Animal 中定义并在 Dog 中被覆盖),Animal 的版本应该被称为 a 是对动物的引用,但反过来。
【问题讨论】:
-
因为它不是子类独有的?
-
这就是抽象方法和多态性的全部意义...... 调用者不需要知道实现的细节......
-
重载与覆盖不同。考虑到编辑,我不再知道您的问题是什么。
-
Animal a = new Dog();a是对 Animal 对象还是 Dog 对象的引用? -
所以,我猜它是
Animal类型的引用,但指向Dog对象。
标签: java inheritance