首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 程式設計入門

[Java 100 例] 007 - 介面與抽象類別的實作範例

     編輯:Java 程式設計入門

本例展示 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();
    }
}

重點解析

  • 介面:定義契約,僅包含常數與抽象方法(Java 8 後可含 default/static 方法)。範例中 Player 規範播放器必須具備的行為。
  • 抽象類別:可包含實作方法與抽象方法。Playing 提供了 display() 共用邏輯,並強制子類別實作 winRun()。
  • 多重實作:Java 不支援多重繼承,但可單一繼承類別並實作多個介面。NewPlay 同時繼承 Playing 與實作 Player。
  • 多型展現:主程式建立 NewPlay 實例,呼叫介面與抽象類別定義的方法,實際執行的是子類別的實作內容。

設計建議

  1. 當需要定義「是一種」關係且共享程式碼時,使用抽象類別。
  2. 當需要定義「能夠做什麼」的行為契約時,使用介面。
  3. 優先使用介面設計 API,保持鬆耦合;抽象類別作為實作細節的部分共用基底。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved