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

《Java核心技術 卷1》第四章學習筆記:對象與類完整指南

     編輯:Java 綜合教學

Java 核心技術 卷1 第4章 學習筆記:對象與類

4.1 面向對象基礎

  • 結構化編程:算法 + 數據結構。
  • 類是構造對象的模板,實例化過程稱創建實例。
  • 封裝:數據隱藏,方法操作數據,提高復用與可靠性。關鍵:方法不直接訪問其他類實例域。
  • 繼承:擴展已有類,子類擁有父類屬性方法。Java 單繼承。
  • 對象三特性:行為(方法)、狀態(實例域值)、標識(唯一身份)。
  • 類關系:依賴、聚合、繼承。UML 類圖描述。

4.2 使用類

  • 對象存儲於堆,變量持有引用。Date d = new Date(); 引用賦值共享對象。
  • 不推薦使用的方法:@Deprecated,編譯警告,未來可能移除。

4.3 設計類

構造器

  • 同類名、無返回類型、new 調用、至少一個、可重載。

實例域封裝

  • 私有域 + 公有訪問器/更改器。優點:內部實現可變、更改器可驗證。
  • 可變對象返回時需克隆 (防御性拷貝),否則破壞封裝。
  • final 域:構造時初始化,不可變。多用於基本類型/不可變類。

方法設計

  • 公有方法對外,私有輔助方法內部。公有方法不可隨意刪除。

靜態成員

  • static 域:類級別,共享單份,ClassName.field 訪問。
  • 靜態常量:public static final,不可變可直接公開。
  • 靜態方法:無 this,只能訪問靜態成員。適用:工廠方法 (如 NumberFormat.getCurrencyInstance())。

參數傳遞

  • Java 只支持按值調用。基本類型傳值,引用類型傳引用的副本。
  • 方法可修改引用指向對象的內容,但不能改變調用者的變量引用本身。
  • swap 示例證明無法交換對象引用。

4.4 對象構造

  • 重載:同名不同參數列表,返回類型不參與區分。
  • 默認初始化:域無顯式賦值時自動賦默認值 (0/false/null)。局部變量必須顯式初始化。
  • 無參構造器:僅在類無任何構造器時編譯器自動生成。
  • 顯式初始化:域聲明處賦值,可調用方法。
  • 調用其他構造器:this(...) 必須首行。
  • 初始化塊:{ ... },構造器前自動執行,多構造器共享邏輯。
  • 構造器執行順序:默認值 → 初始化塊/域賦值(按聲明序) → this(...) 目標構造器 → 本構造器主體。
  • 析構:Java 無析構器,GC 自動回收。finalize() 不可靠,資源釋放用 close()。

4.5 包機制

  • 組織類、保證唯一。建議反轉域名作包名。
  • import 單類或整包,java.lang 自動導入。靜態導入 import static。
  • 包訪問權限:無修飾符 = 包可見。包密封防止動態添加類。

4.6 類路徑

  • 類文件目錄結構匹配包名。JAR 打包多類。
  • 類路徑 = 基目錄 + 當前目錄 + JAR 路徑集合。編譯器按導入順序查找,要求唯一。

4.7 文檔註釋

  • javadoc 從包/公有類/公有保護構造器方法/域抽取生成 HTML。
  • 註釋格式:/** ... */,標記以 @ 開頭。
  • 類註釋放 import 後類定義前;方法註釋含 @param @return @throws;包註釋需 package.html 或 package-info.java;概述註釋放 overview.html。

4.8 類設計技巧

  1. 數據必須私有。
  2. 數據必須初始化。
  3. 避免過多基本類型,用小對象替代。
  4. 非必需不寫 getter/setter。
  5. 職責過重的類拆分。
  6. 命名體現職責。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved