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

Java 面向對象程式設計核心概念完整指南

     編輯:Java 相關知識

前言

Java 的面向對象程式設計(OOP)是建立健壯、可維護應用程式的基石。本文系統整理了類別、物件、封裝、繼承、多型等核心概念,並深入解析建構子、存取修飾符、關鍵字(static、final、abstract)、介面、內部類別等進階主題,適合作為進階學習與快速查閱的參考資料。

一、類別與物件:OOP 的基石

1.1 類別

類別是現實世界中具有相同屬性與行為事物的抽象描述,是建立物件的藍圖。在 Java 中,類別包含屬性(成員變數)與方法(成員函數)。

[修飾符] class 類別名稱 [extends 父類別] [implements 介面名稱] {
    // 類別成員變數宣告
    // 類別方法宣告
}

1.2 物件

物件是類別的具體實例。使用 new 運算子在堆疊記憶體中配置空間,並呼叫建構子完成初始化。

類別名稱 物件名稱 = new 類別名稱(參數列表);

二、類別結構詳細解析

2.1 類別修飾符

  • 存取修飾符:public(任何地方可存取)、預設/package-private(同一套件可存取)。
  • 功能修飾符:final(不可被繼承)、abstract(抽象類別,不可實例化)。

2.2 成員變數(屬性)

可為基本型別、物件參考或陣列。宣告語法:[修飾符] 型別 變數名稱 [= 初始值];

2.3 方法(行為)

方法定義類別的功能,語法如下:

[修飾符] 回傳型別 方法名稱(參數列表) [throws 例外清單] {
    // 區域變數宣告
    // 執行陳述句
    [return 回傳值;]
}

方法分為存取屬性的存取器/修改器與業務邏輯方法兩大類。

2.4 建構子

  • 名稱與類別相同,無回傳型別(連 void 也無)。
  • 可多載,支援 0 個或多個參數。
  • 若未自訂,編譯器會產生無參數的預設建構子。
  • 主要用途:初始化物件狀態、提供靈活的建立方式。

三、封裝與存取控制

封裝隱藏內部實作,僅透過公開介面互動。Java 提供四種存取層級:

修飾符同類別同套件子類別(不同套件)任意類別
private✓✗✗✗
預設✓✓✗✗
protected✓✓✓✗
public✓✓✓✓

最佳實務:屬性設為 private,提供 public getter/setter;方法視需求開放。

四、關鍵字深度解析

4.1 static(靜態)

  • 靜態變數:屬於類別,所有實例共享單一記憶體空間。
  • 靜態方法:屬於類別,可直接用 類別名.方法名() 呼叫,不可存取非靜態成員。
  • 靜態常量:public static final,命名慣例全大寫(如 Math.PI)。

4.2 final(最終)

  • final 類別:不可被繼承(如 String)。
  • final 方法:不可被覆寫,確保行為不變,早期也利於 JVM 內聯優化。
  • final 變數:常數,初始化後不可變更。實例變數需在建構子結束前賦值。

4.3 abstract(抽象)

  • 抽象類別:含抽象方法的類別,不可實例化,作為子類別擴充的模板。
  • 抽象方法:只有宣告無主體,強制子類別實作。

4.4 介面

介面是完全抽象的類別,僅包含常數(public static final)與抽象方法(public abstract,Java 8+ 可含 default/static 方法)。類別用 implements 實作介面,支援多型與「多重實作」效果,彌補單一繼承限制。

五、繼承與多型

5.1 繼承

  • 語法:class 子類別 extends 父類別。
  • 子類別繼承父類別非 private 成員,可新增或覆寫方法。
  • Java 單一繼承,但可實作多個介面。
  • super 參考父類別成員,this 參考自身。

5.2 方法覆寫 vs 多載

特性覆寫多載
發生位置父子類別之間同一類別內部
方法簽名完全相同名稱相同,參數列表不同
回傳型別相同或共變型別可不同
存取權限不可縮小無限制
多型體現執行期動態綁定編譯期靜態綁定

5.3 多型核心機制

  • 向上轉型:父類別參考指向子類別物件(Animal a = new Cat();)。
  • 動態方法分派:呼叫方法時,JVM 依據物件實際型別而非參考型別決定執行哪個版本(需為覆寫方法)。
  • 向下轉型:需強制轉型((Cat)a),建議先用 instanceof 判斷。

六、內部類別

定義在另一個類別內部的類別,可直接存取外部類別的所有成員(含 private)。常見類型:成員內部類別、區域內部類別、匿名內部類別、靜態巢狀類別。

七、物件導向三大特性總結

  1. 封裝:隱藏細節,提供介面,提高安全性與模組化。
  2. 繼承:程式碼重用,建立 IS-A 關係,為多型奠基。
  3. 多型:同一介面,不同實作,提升擴充性與彈性。

八、常見陷阱與最佳實務

  • 區分 ==(參考比較)與 equals()(內容比較)。
  • 避免在建構子中呼叫可被覆寫的方法。
  • 合理使用 final 保護不變性。
  • 介面優於抽象類別定義契約;組合優於繼承實現重用。
  • 覆寫 equals() 時必須同步覆寫 hashCode()。

結語

掌握 Java OOP 核心概念,不僅能寫出結構清晰、易維護的程式碼,更是深入理解設計模式、框架原理與 JVM 運作的基礎。建議配合大量實作練習,將理論內化為直覺。

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