今天剛學的java繼承,然後把課後編程題的實例做一個總結
編程要求:設計一個動物聲音“模擬器”,希望模擬器可以模擬許多動物的叫聲,要求如下。
·編寫抽象類Animal
Animal抽象類有兩個抽象法cry()和getAnimalName(),即要求各種具體的動物給出自己的叫聲和種類名稱。
·編寫模擬器類Simulator
該類有一個playSound(Animal animal)方法,該方法的參數是Animal類型。即參數animal可以調用Animal的子類重寫的cry()方法播放具體動物的聲音,調用子類重寫的getAnimalName()方法顯示動物種類的名稱。
·編寫Animal類的子類:Dog類和Cat類
UML圖略
·編寫主類Application的main方法中至少包含如下代碼:
Simulator simulator=new Simulator();
simulator.playSound(new Dog());
simulator.playSound(new Cat());
在編程之前首先要理清思路,對於初學者來說,這些都是簡單的編程,而給出了許多提示。這就更便於我們進行程序設計。由於UML圖沒法在設計器裏面畫出來,這裏就省略了。
首先,有五個類,Simulator,Animal,Dog,Cat和主類Application.而Simulator依賴於Animal類,Dog類和Cat類是Animal的子類。
根據要求依次設計類,首先我們編寫Animal類,代碼如下。
public abstract class Animal { //根據要求聲明抽象類使用abstract關鍵字
public abstract void cry();
public abstract String getAnimalName();
}
然後編寫模擬器類Simulator
public class Simulator {
public void playSound(Animal animal){
System.out.println(animal.getAnimalName()+"的叫聲是:");
animal.cry();
}
}
編寫Animal類的子類:Dog類和Cat類
public class Dog extends Animal { //要求各種動物給出自己的名字和叫聲
String name="小白"; //故需要聲明名字name和叫聲cry()方法
public String getAnimalName() {
System.out.println("我的名字是:"+name);
return name;
}
public void cry() {
System.out.println("汪汪......");
}
}
public class Cat extends Animal { //Cat和Dog類一樣,都是繼承Animal父類,使用關鍵字extends
String name="小咪";
public String getAnimalName() {
System.out.println("我的名字是:"+name);
return name;
}
public void cry() {
System.out.println("喵貓......");
}
}
最後我們需要編寫主類Application
public class Application {
public static void main(String[] args) {
Simulator simulator=new Simulator ();
simulator.playSound(new Dog());
simulator.playSound(new Cat()); //Animal animal =new Dog();
//simulator.playSound(animal);
//上面兩行代碼等價於右邊4行代碼 //Animal animal=new Cat();
//simulator.playSound(animal);
}
}
我們用cmd來運行編寫的代碼(環境已經配置好,如果不會配置java環境參考小編的Java環境配置文章)。
這是最後運行成功的結果,這樣小貓和小狗的名字和叫聲就能輸出了。