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

Java 面向對象核心知識體系大全:從封裝到多態的完整圖解指南

     編輯:Java 綜合教學

面向對象思想:從「過程」到「對象」的思維轉變

面向過程強調功能行為(動詞),如 HideWindow(window),是「謂語-賓語」關係。
面向對象將功能封裝進對象,強調具備功能的對象(名詞),如 window.hide(),是「主語-謂語」關係。面向對象基於面向過程,更符合人類自然思維。

核心設計原則

  1. 分析問題中的類與對象
  2. 分析類的屬性與方法
  3. 分析類之間關系
  4. 合適的方法出現在合適的類中

面向對象三大特征

  • 封裝:隱藏內部細節,提供公共接口,提高內聚、降低耦合。
  • 繼承:提高代碼復用,建立類層次,為多態鋪路。Java 單繼承,支持多層繼承。
  • 多態:父類引用指向子類對象,提高擴展性與維護性。

類與對象:圖紙與實例

類是抽象概念定義(圖紙),對象是具體實例(汽車)。同類事物共性定義在類中,每個對象擁有獨立屬性值。

成員變量 vs 局部變量

維度成員變量局部變量
定義位置類中,方法外方法內、代碼塊內
內存位置堆內存(隨對象)棧內存
生命周期隨對象創建/銷毀隨作用域結束釋放
默認值有無(必須初始化)

同名時局部變量屏蔽成員變量,可用 this 區分。

封裝與 private

將屬性私有化,提供公共 set/get 方法。好處:隔離變化、便於使用、提高復用與安全性。

構造函數

  • 方法名與類名同,無返回值類型,無具體返回值。
  • 作用:對象初始化。
  • 默認無參構造;多構造函數構成重載。

關鍵字詳解

this

代表調用該方法的對象引用。用於區分同名成員、構造器互調、傳遞當前對象。

static

  • 修飾成員(變量/方法),隨類加載、優先於對象、被所有對象共享、可用類名調用。
  • 靜態方法只能訪問靜態成員,不可用 this/super,main 方法為靜態。

繼承

  • extends 關鍵字,子類繼承父類非私有成員。
  • 提高復用,建立關系(is-a),為多態鋪墊。
  • Java 單繼承,不支持多繼承(用多實現替代)。

super

代表父類內存空間標識。用於:訪問父類被隱藏成員、子類構造器中調用父類構造器(super() 必須首行)。

方法覆蓋

  • 子類重寫父類方法(同名、同參數、同返回類型)。
  • 私有方法不可覆蓋;覆蓋時權限 ≥ 父類;靜態只能覆蓋靜態。
  • 應用:子類沿襲父類功能並定義特有內容。

final

  • 修飾類:不可繼承;修飾方法:不可覆蓋;修飾變量:常量(賦值一次)。
  • 內部類只能訪問 final 修飾的局部變量。

抽象類與接口

抽象類

  • abstract 修飾類/方法;抽象方法無方法體。
  • 不可實例化;子類必須覆蓋所有抽象方法方可實例化。
  • 體現「is-a」繼承關系,可包含非抽象方法。

接口

  • 成員固定:常量 public static final、方法 public abstract(JDK8+ 可有 default/static 方法)。
  • 體現「like-a」實現關系,支持多實現,降低耦合。
  • 接口可繼承接口;類可單繼承類、多實現接口。

區別對比

維度抽象類接口
關系繼承實現
關系類型is-alike-a
方法可有非抽象方法全抽象(JDK8前)
繼承限制單繼承多實現

多態深度解析

定義與形式

父類/接口引用指向子類對象:Animal a = new Cat();

前提條件

  1. 存在繼承/實現關系
  2. 有方法覆蓋

表現形式

  • 靜態多態:方法重載(編譯時確定)。
  • 動態多態:方法重寫(運行時動態綁定)。

訪問特點

  • 成員方法:編譯看引用類型,運行看對象類型。
  • 成員變量:只看引用類型。

向上/向下轉型

子類對象可作父類用(向上),失去子類特有成員;父類引用可強轉回子類(向下),需 instanceof 判斷。

內部類與匿名內部類

  • 內部類可直接訪問外部類私有成員;外部類需創建內部類對象訪問。
  • 成員位置內部類可用 private/static 修飾;static 內部類只能訪問外部靜態成員。
  • 局部內部類可訪問 final 修飾的局部變量。
  • 匿名內部類:實現接口/繼承類的簡化寫法,常用於參數為接口且方法≤3時。

異常處理體系

體系結構

Throwable → Error(嚴重錯誤,不處理) / Exception(可處理)

常用方法

  • getMessage()、toString()、printStackTrace()(含位置)、printStackTrace(PrintStream)(寫日誌)。

throws vs throw

  • throws:方法聲明拋出異常類名。
  • throw:方法內拋出異常對象。

try-catch-finally

  • try 監測代碼;catch 處理;finally 必執行(關資源)。
  • 僅 System.exit(0) 可跳過 finally。
  • try 塊內變量僅在塊內有效,外部需預先聲明引用。

自定義異常

繼承 Exception,構造器調用 super(message),用 throw 拋出。

包與訪問權限

  • 包管理類文件,提供多層命名空間;package 聲明在首行,全類名 = 包名.類名。
  • 四種權限:public > protected > default > private(跨包子類可訪 protected)。

JAR 包操作

  • jar -cvf 創建;-tvf 查看;-xvf 解壓;-cvfm 自定義清單。
  • 清單文件指定 Main-Class 可雙擊運行 GUI 程序。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved