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

Java 繼承與接口實戰:多實現接口上溯造型、ActionCharacter 基類復用

     編輯:Java 綜合教學

Java 繼承與接口實戰:多實現接口上溯造型、ActionCharacter 基類復用

接口的核心價值在於「多上溯造型」——一個對象可被視為多種類型。本文通過一個「英雄技能」示例,展示:
① 多接口實現 (CanFight/CanSwim/CanFly)
② 抽象基類 ActionCharacter 封裝共性邏輯 (fight())
③ 子類 Hero 組合繼承與實現,滿足「單繼承、多實現」語法規則。

核心代碼

// 三個行為接口
interface CanFight { void fight(); }
interface CanSwim { void swim(); }
interface CanFly  { void fly(); }

// 基類提供預設 fight 實現,減少子類重複代碼
class ActionCharacter {
    public void fight() { System.out.println("基礎攻擊"); }
}

// 英雄:繼承基類 + 實現三接口
class Hero extends ActionCharacter implements CanFight, CanSwim, CanFly {
    @Override public void fly()  { System.out.println("翱翔天際"); }
    @Override public void swim() { System.out.println("潛游深海"); }
    // fight() 繼承自 ActionCharacter,可選擇 @Override 覆寫
}

// 測試:上溯造型為不同接口類型調用
public class Adventure {
    static void t(CanFight x) { x.fight(); }
    static void u(CanSwim x) { x.swim(); }
    static void v(CanFly x)  { x.fly(); }
    static void w(ActionCharacter x) { x.fight(); }

    public static void main(String[] args) {
        Hero hero = new Hero();
        t(hero); // CanFight 視角
        u(hero); // CanSwim 視角
        v(hero); // CanFly 視角
        w(hero); // ActionCharacter 視角
    }
}

關鍵知識點

  1. 語法順序:extends 在前,implements 在後,否則編譯報錯。
  2. 上溯造型:Hero 實例可自動向上轉型為任意實現的接口或父類類型,方法調用走動態分派。
  3. 基類預設實現:ActionCharacter 提供 fight() 默認行為,Hero 免去實現 CanFight.fight(),體現「接口定義契約,基類提供通用邏輯」的設計模式。
  4. 接口 vs 抽象類選型:
    • 純行為契約、無狀態、需多實現 → 接口
    • 有共享字段/通用邏輯、單繼承層級 → 抽象類
    • 實戰常組合:抽象類實現接口骨架,具體類繼承抽象類

擴展思考:默認方法

Java 8+ 允許接口定義 default 方法,可進一步減少基類:

interface CanFight {
    void fight();
    default void combo() { fight(); fight(); System.out.println("連招!"); }
}

但 default 方法無法訪問實例字段(接口無狀態),複雜邏輯仍建議放入抽象基類。

設計原則:「面向接口編程,基類封裝變化」。Hero 依賴 CanFight/CanSwim/CanFly 抽象,而非具體實現;ActionCharacter 封裝共性 fight(),若未來改為「魔法攻擊」只需調整基類,符合開閉原則。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved