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

Java 介面機制詳解:定義語法、多實作與多重繼承、搭配抽象類別的設計模式

     編輯:Java 相關知識

介面定義語法

interface Drawable {
    String DEFAULT_COLOR = "RED"; // 隱含 public static final
    void draw();                  // 隱含 public abstract
    default void preview() {      // Java 8+ 預設方法
        System.out.println("預覽...");
    }
    static void info() {          // Java 8+ 靜態方法
        System.out.println("Drawable 介面 v1.0");
    }
}

實作介面

class Circle implements Drawable {
    @Override public void draw() { System.out.println("畫圓"); }
}
class Rectangle implements Drawable, Serializable { // 多實作
    @Override public void draw() { System.out.println("畫矩形"); }
}

介面繼承 (多重繼承)

interface Shape extends Drawable, Cloneable { // 介面可多繼承
    double area();
}

搭配抽象類別

abstract class AbstractShape implements Shape {
    protected String color;
    public AbstractShape(String color) { this.color = color; }
    public String getColor() { return color; }
    // area() 留給具體子類實作
}
class Triangle extends AbstractShape {
    private double a,b,c;
    public Triangle(String color, double a,double b,double c) {
        super(color); this.a=a; this.b=b; this.c=c;
    }
    @Override public double area() { /* 海倫公式 */ return 0; }
    @Override public void draw() { System.out.println("畫三角形"); }
}

介面 vs 抽象類別 選擇指南

場景推薦理由
定義「是一種」能力、多類無關類別共享行為介面支援多實作、無狀態、Java 8+ 可有預設實作
定義「是一類」實體、共享狀態/通用邏輯抽象類可有建構子、實例欄位、非抽象方法、模板方法
需要向舊版相容新增方法介面 (default 方法)不破壞現有實作類
單繼承限制下需組合多種行為介面 + 組合/委派避免繼承層級過深

關鍵限制

  • 介面欄位隱含 public static final,不可為實例變數。
  • 介面方法預設 public,不可 protected/private (Java 9+ 允許 private 方法)。
  • 類可實作多個介面,但只能繼承一個父類 (抽象或具體)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved