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
Java SCJP 多型 多形 Polymorphism Abstract Interface