有时,您发明一个接口来表示某种类型的对象支持某种类型的行为。例如,两者Dog
都有ScaryDog
接口MeleeAttacker
。
但是现在说我将 a 传递给MeleeAttacker*
某个函数,
void Attack( MeleeAttacker* attacker, Living *victim ) ;
因为MeleeAttacker
从层次结构中分离出来,我无法访问的生命体征——即使attacker
我知道是一个. 由于我构建层次结构的方式,我知道它将永远是 common class 的继承者。但是代码不知道这一点。我的问题是,我怎么能告诉代码呢?Living
attacker
attacker
Living
MeleeAttackers
WarmBlooded
我想我只是通过引入MeleeAttacker
接口来混淆了事情,但我不想WarmBlooded
用不会在层次结构的某些分支中实现的功能(例如,aBird
的混战的“实现”)挤满基类攻击可能是{}
(什么都没有))。