它可能看起来像你的伪问题,但我有困难解决这个:简单的面向对象的编程概念
我们有一个抽象class Animal
和Cat
和延伸它Dog
。在Animal
我们有一个方法produceSound();
是抽象的。正如你可能已经猜到了Cat
它应该返回“毛”和Dog
- “宝”或类似的东西。这是确定的,但现在我们必须写一个返回取决于他们的声音Cat
或Dog
对象Animal class
一个static
方法。例如:identifyAnimal("Mao")
应该返回Cat
。
问题:如何实施identifyAnimal(String sound)
方法?
下面是层次结构的一些简单的例子:
动物类
public abstract class Animal {
protected abstract String produceSound();
protected static void identifyAnimal(String animalSound) {
// TODO
}
}
Cat类
public class Cat extends Animal{
@Override
protected String produceSound() {
return "Mao";
}
}
狗类
public class Dog extends Animal{
@Override
protected String produceSound() {
return "Bao";
}
}
测试类
public class AnimalTest {
public static void main(String[] args) {
Animal.identifyAnimal("Bao");
}
}
在AnimalTest
类调用Animal.identifyAnimal("Bao");
我们应该得到一个Dog
时。
你想dog.identifyAnimal( “毛”)返回...猫的一些实例或字猫?也许狗不应该知道关于猫的任何事情。但是如果它只知道“宝”,那么你真的在问,布尔dog.isYourSound(“宝”); 静态方法是没有任何实例。 – 2012-03-11 02:04:11
想知道,猫在哪个国家说毛和狗宝? – rid 2012-03-11 02:04:54
我刚刚编辑过这个问题。 – nyxz 2012-03-11 02:04:54