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

Java 接口全解析:定義、實現、多實現、繼承與默認方法實戰

     編輯:Java 綜合教學

接口本質

接口是抽象方法的集合,定義「能做什麼」的契約,不關心「怎麼做」。關鍵字 interface,隱式 public abstract 修飾方法,隱式 public static final 修飾字段。

基礎定義與實現

public interface Animal {
    void eat();      // 隱式 public abstract
    void travel();   // 隱式 public abstract
}

public class Dog implements Animal {
    @Override public void eat() { System.out.println("Dog eats meat"); }
    @Override public void travel() { System.out.println("Dog runs"); }
    public static void main(String[] args) {
        Animal d = new Dog();
        d.eat(); d.travel();
    }
}

接口特性速覽

  • 不能實例化,但可作為引用類型(多態)。
  • 實現類必須實現所有抽象方法,否則聲明為抽象類。
  • 一個類可 implements 多個接口,突破單繼承限制。
  • 接口可 extends 多個父接口。

Java 8+ 增強:默認方法與靜態方法

public interface Swimmable {
    default void swim() { System.out.println("Swimming..."); } // 可選覆寫
    static void dive() { System.out.println("Diving deep"); }  // 接口級工具方法
}

public class Fish implements Swimmable {
    // 不覆寫 swim() 直接使用默認實現
    public static void main(String[] args) {
        Fish f = new Fish();
        f.swim();
        Swimmable.dive(); // 靜態方法通過接口名調用
    }
}

接口繼承鏈

public interface Sports {
    void setHomeTeam(String name);
    void setVisitingTeam(String name);
}

public interface Football extends Sports { // 接口繼承接口
    void homeTeamScored(int points);
    void visitingTeamScored(int points);
    void endOfQuarter(int quarter);
}

// 實現 Football 需實現 5 個方法 (2 來自 Sports)
public class Match implements Football { /* ... */ }

重寫規則與注意事項

  1. 方法簽名、返回類型必須兼容(协變返回類型允許)。
  2. 拋出異常範圍不得大於接口聲明。
  3. 實現類為抽象類時,可不實現接口方法,轉交給具體子類。
  4. default 方法衝突:實現多個接口含同名默認方法 → 必須顯式覆寫並指定調用 InterfaceA.super.method()。

實戰模式:標記接口與能力接口

// 標記接口:無方法,僅標識能力 (如 Serializable, Cloneable)
public interface Auditable {}

// 能力接口:定義行為契約
public interface Exportable {
    void export(OutputStream out);
}

// 組合使用
public class Report implements Auditable, Exportable {
    @Override public void export(OutputStream out) { /* PDF/Excel 導出 */ }
}

總結

接口是 Java 實現多態、解耦、擴展的核心機制。Java 8 賦予默認/靜態方法後,接口進化為「帶實現的契約」,進一步弱化抽象類地位。設計原則:面向接口編程、接口盡量小而專一(單一職責)、優先組合繼承。

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