Java初探:多型(Polymorphism)之簡單示範
在介紹了Java的介面(Interface)與抽象(Abstract)寫法之後,我們馬上來實驗一下物件導向中很重要的多型之觀念與寫法。
剛學介面的的人,一定覺得介面很無聊,如果你要規範某個類別一定要實作某些方法或欄位的話,那麼文件規範也辦的到。這樣的說法並沒有錯,但是沒有抽象(Abstract)、介面(Interface) 的實作,那麼你一定無法使用多型這個在物件導向設計中,非常重要的撰寫模型。話不多說,直接看下面的程式碼。
宣告一個遙控器的介面,並且規範之後實作(Implements)的類別,一定要具備turnOn()與turnOff()方法。
//RemoteControl.java
public interface RemoteControl
{
public String getName();
public String turnOn();
public String turnOff();
}
創造一個冷氣遙控器類別,介面的部分是實作RemoteControl。
//AirConditioner.java
public class AirConditioner implements RemoteControl
{
private String name;
public AirConditioner(String cTemp) { this.name = cTemp; }
public String getName() { return this.name; }
public String turnOn() { return "AirConditioner ON"; }
public String turnOff() { return "AirConditioner OFF"; }
}
創造一個電動門遙控器類別,介面的部分是實作RemoteControl。
//ElectronicDoor.java
public class ElectronicDoor implements RemoteControl
{
private String name;
public ElectronicDoor(String cTemp) { this.name = cTemp; }
public String getName() { return this.name; }
public String turnOn() { return "ElectronicDoor ON"; }
public String turnOff() { return "ElectronicDoor OFF"; }
}
一切就緒,開始進行多型的調用,這就是多型的寫法,用遙控器來比喻是不是很感覺呢?
public class Test
{
public static void main(String[] args)
{
Operater(new AirConditioner("Pansonic"));
Operater(new ElectronicDoor("National"));
}
//Super Remote Controller
public static void Operater(RemoteControl oRC)
{
System.out.println("RemoteName: " + oRC.getName());
System.out.println(oRC.turnOn());
System.out.println(oRC.turnOff());
}
}
輸出結果如下:
C:\Java>java Test
RemoteName: Pansonic
AirConditioner ON
AirConditioner OFF
RemoteName: National
ElectronicDoor ON
ElectronicDoor OFF