它可能看起來像你的僞問題,但我有困難解決這個:簡單的面向對象的編程概念
我們有一個抽象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