【发布时间】:2014-11-24 21:39:18
【问题描述】:
Parent parent = new Child();
parent.someMethod();
在什么情况下,像上面这样的判断是有用的,或者它背后的逻辑解释是什么?而不是以下内容:
Child child = new Child();
child.someMethod();
在这两种情况下,无论如何,Child 的方法只会被调用。那么,为什么允许这种表示形式?这不是设计中允许的不必要的功能吗?
我能想出的唯一原因,取决于我所做的一些摆弄,它让你知道如果父级中不存在“someMethod()”,则它在父级中不可用,在写“parent.someMethod()”!
您能否阐明它的用途/必要性,并给我一些与面向对象概念相关的观点?我知道这与多态性有关。但我认为没有必要使用这种表示。
非常感谢实际的真实示例。谢谢。
我检查了以下 SO 问题,但我不觉得我有我正在寻找的答案。 Using superclass to initialise a subclass object java
【问题讨论】:
-
这在几乎每本介绍性 Java 书籍中都有解释。答案确实是“多态性”。
-
你能提供一个实际的例子吗 parent.someMethod();逻辑上比 child.someMethod();?
-
@user104309 - 当然 - 当父类有多个可能的子类时,现在和将来 - 并且您希望代码适用于所有子类。
标签: java inheritance polymorphism