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

Java 介面核心概念總覽

     編輯:Java 相關知識

為什麼需要介面?

假設我們要實作一個防盜門的功能:門具有「開」與「關」的行為,鎖則具備「上鎖」與「開鎖」的操作。根據物件導向設計,門與鎖應分別為獨立的類別。然而,防盜門既是一門,又有一把鎖,若讓防盜門同時繼承「門」與「鎖」兩個類別,將違反「is-a」關係(防盜門不是鎖),且 Java 僅支援單一繼承。此時,介面便能完美解決此問題。

什麼是介面?

在軟體工程中,介面是一種規範與標準,它約束類別的行為,僅包含方法特徵的集合,不提供方法實作。介面可視為一種特殊的抽象類別,但其表達方式與設計哲學與抽象類別截然不同:抽象類別利於程式碼重用,介面則有利於功能擴充與維護。

抽象類別與介面的差異

  1. 抽象類別可提供成員方法的實作細節,介面中僅能存在 public abstract 方法(Java 8 起可包含 default 與 static 方法)。
  2. 抽象類別的成員變數可為各類型,介面的成員變數隱含為 public static final 常數。
  3. 介面不能包含靜態程式碼區塊與靜態方法(Java 8 後可有 static 方法),抽象類別則可以。
  4. 一個類別只能繼承一個抽象類別,但可實作多個介面。

如何定義介面

語法結構

[修飾符] interface 介面名稱 extends 父介面1, 父介面2, ... {
    // 常數定義
    // 方法定義
}

類別實作介面

class 類別名稱 extends 父類別 implements 介面1, 介面2, ... {
    // 類別成員
}

定義介面的注意事項

  1. 介面命名規則與類別相同;若修飾符為 public,則專案全域可見;省略修飾符則僅在同一套件內可見。
  2. 介面可定義常數,不可定義變數。介面中的屬性會自動加上 public static final,必須在定義時指定初值。
  3. 介面所有方法皆為抽象方法,隱含 public abstract 修飾。
  4. 介面無法實例化,不能包含建構子。
  5. 介面之間可透過 extends 建立繼承關係,一個介面可繼承多個介面,但不能繼承類別。
  6. 實作類別必須實作介面所有方法,否則必須宣告為抽象類別。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved