【发布时间】:2016-06-17 07:22:16
【问题描述】:
我有一个类层次结构,看起来有点像这样:
class Parent { }
class Child1 extends Parent {}
class Child2 extends Parent {}
class Child3 extends Parent {}
在另一个类中,我的方法如下所示:
void doSomething(Parent p) { //default }
void doSomething(Child1 c) { //implementation for Child 1 }
void doSomething(Child2 c) { //implementation for Child 2 }
目前,当我有这样的事情时
Parent p = new Child2();
doSomething(p);
第一种方法,doSomething(Parent) 被调用而不是doSomething(Child2)
假设我有一个静态类型为 Parent 和动态类型为 ChildN 的项目列表。我如何确保为动态类型提供的方法被调用,而不进行强制转换。只针对 Child3(没有具体的 doSomething 方法)我想调用默认实现。
【问题讨论】:
标签: java dynamic-typing