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

Java 面向對象核心特性全景圖:對象模型、多態機制、克隆協議與內部類體系

     編輯:Java 相關知識

對象與類

  • Date d = new Date():new Date() 在堆創建對象,d 存儲引用(類似 C++ 指針)。
  • Java 無空引用概念,null 對應 C++ NULL。
  • 靜態方法屬於類,不可訪問實例字段;適用於:工具方法、訪問靜態字段、工廠方法。

防御性拷貝

Getter 返回可變對象引用會破壞封裝:

// 危險
public Date getDate() { return date; }
// 安全:返回副本
public Date getDate() { return (Date) date.clone(); }

靜態成員與初始化順序

  1. 靜態字段/靜態塊(按聲明順序)
  2. 實例字段/實例塊(按聲明順序)
  3. 構造器

工廠方法模式優於構造器:可命名、可返回子類型(如 NumberFormat.getCurrencyInstance() 返回 DecimalFormat)。

方法參數傳遞機制

  • 基本類型:值傳遞,不可修改實參。
  • 引用類型:引用值傳遞,可修改對象內部狀態,不可讓實參指向新對象。

多態與動態綁定

成員類型綁定時機依據
字段(含靜態)編譯期(靜態綁定)聲明類型
private/static/final 方法編譯期(靜態綁定)聲明類型
其他方法運行期(動態綁定)實際對象類型
Father f = new Son();
f.field;           // 訪問 Father.field
f.staticMethod();  // 調用 Father.staticMethod()
f.instanceMethod(); // 調用 Son.instanceMethod()  ← 動態綁定

覆寫規則:子類方法可見性 ≥ 父類;拋出異常 ≤ 父類。

抽象類與接口

  • 抽象類:可含具體方法/字段;單繼承;不可實例化(但可聲明數組引用)。
  • 接口:Java 8 前全抽象方法,字段隱式 public static final;多實現;不可實例化。
  • 核心差異:類定義「是什麼」,接口定義「能做什麼」。

Object 核心方法契約

equals

  • Object 默認比較引用(同 ==)。
  • 覆寫需滿足:自反性、對稱性、傳遞性、一致性、非空性。
  • 覆寫 equals 必須覆寫 hashCode:相等對象 hashCode 必相等。

hashCode

散列碼無規律整數,用於哈希容器定桶。實現技巧:31 * result + fieldHash。

克隆協議

  • 實現 Cloneable、重寫 public clone()、調用 super.clone()。
  • 淺拷貝:基本類型複製、引用共享。
  • 深拷貝:可變引用字段遞歸 clone()。
  • String 等不可變/不可克隆類無需深拷貝。

內部類四大類型

類型特點訪問外部典型用途
成員內部類非靜態,隱持外部引用OuterClass.this邏輯強綁定、事件監聽器
靜態內部類static,無外部引用不可直接訪問實例成員單例模式、工具類、Builder
局部內部類定義在方法/塊內可訪問 final/效果性最終局部變量封裝邏輯、線程任務
匿名內部類無名、現場實現接口/繼承類同局部內部類一次性回調、比較器、Runnable

掌握這些核心特性,是寫出健壯、可維護 Java 代碼的基石。

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