【发布时间】:2019-12-29 15:53:08
【问题描述】:
所以规则规定,如果 B 是 A 的子类,那么当期望 A 类型的对象时,B 会这样做。
因此,如果我在超类 Animals 中有一个非静态方法并使用子类 Dog 的对象调用它,它将正常运行,例如Dog rexy = new Dog(); -> rexy.someMethodFromAnimals();。然后,我从该对象的静态类型中获得什么好处 Animals 例如Animals rexy = new Dog();。这会带来什么?
【问题讨论】:
-
我真的不明白您所说的“正常运行”和“该对象动物的静态类型”是什么意思。你能改写一下吗?
-
就像这样,它会编译并运行。因此我想知道为什么需要创建
Animals rexy = new Dog();而不仅仅是Dog rexy = new Dog();。我所说的静态是指静态绑定类型。 -
虽然不是在谈论界面,但从这个意义上说,我可以在所有 SO 中搜索类似的东西并声称“可能重复”。另外,我得到了正确的答案,为什么它太宽泛了?
-
在多态中隐式使用,你可以将一个超类列表传递给一个函数,并循环遍历子类并执行相同的覆盖方法,但每个子类对象会以不同的方式执行。
标签: java object inheritance subclass superclass