本例展示 Java 中介面與抽象類別的定義方式,以及一個類別如何同時實作介面與繼承抽象類別。透過一個簡單的媒體播放器情境,說明多型與程式碼重用的基本概念。
// 介面:定義播放器的基本操作
interface Player {
int FLAG = 1; // 介面中的常數預設為 public static final
void play(); // 播放
void pause(); // 暫停
void stop(); // 停止
}
// 抽象類別:提供共用的顯示方法,並定義抽象方法
abstract class Playing {
public void display(Object oPara) {
System.out.println(oPara);
}
abstract void winRun(); // 抽象方法,子類別必須實作
}
// 實作類別:繼承 Playing 並實作 Player 介面
public class NewPlay extends Playing implements Player {
public void play() {
display("NewPlay.play()");
}
public void pause() {
display("NewPlay.pause()");
}
public void stop() {
display("NewPlay.stop()");
}
// 實作抽象類別的抽象方法
void winRun() {
display("NewPlay.winRun()");
}
public static void main(String[] args) {
NewPlay p = new NewPlay();
p.play();
p.pause();
p.stop();
p.winRun();
}
}
Player 規範播放器必須具備的行為。Playing 提供了 display() 共用邏輯,並強制子類別實作 winRun()。NewPlay 同時繼承 Playing 與實作 Player。NewPlay 實例,呼叫介面與抽象類別定義的方法,實際執行的是子類別的實作內容。