【发布时间】:2014-08-29 18:24:40
【问题描述】:
我有一个超类动物和一堆继承类...狗、猫和猪等。
我的问题是所有的狗猫和猪都有自己不同的参数。类“动物”是一个引入参数对象。
所以,狗可能有 getbark.. pig 可能有 getoink..
我有一个方法将“pig”与类 pig.. 联系起来,还有一个 getter,当我 get("pig"); 时返回动物类型。和其他人一样..
问题是,如果我做 Animal Animal = get("pig"),然后尝试对动物使用 pig 的方法.. 即。动物.oink(), 我得到“动物类型的方法是 undef”,因为 oink 不在动物中,它在猪中。
我能想到解决这个问题的唯一方法是将 oink、woof、meow、neigh 和其他 20 种方法放在超类中。这很愚蠢,因为 dog 只需要 woof,而不需要 oink、meow、neigh,唧唧喳喳……
我很抱歉这个令人费解的例子。这是我能想到的唯一解释方法。我知道你不能在 Java 中沮丧。,有什么解决方案吗?
编辑:
这只是一个简单的例子.. 不仅仅是一个说话功能。例如,狗具有猪没有的“梳子”功能。 我可以在超类中有一个通用的 dothings() 方法,并在子类中有一堆方法多次覆盖相同的 dothings 方法吗?
【问题讨论】:
-
这叫做铸造...
Pig pig = (Pig) get("pig"); pig.oink();。还可以考虑在Animal中使用public abstract void makeSound();。 -
为什么不在子类中覆盖 getSound() 方法?
标签: java inheritance