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

Java 面向對象核心筆記(二):方法、建構子、重載、修飾符、繼承、多態、抽象、封裝、介面、包

     編輯:Java 相關知識

前言

本文系統整理 Java 面向對象核心知識體系,涵蓋方法、建構子、重載、修飾符、繼承、多態、抽象類別、封裝、介面、包等十大主題,配合程式碼範例與表格總結,適合初學者建立完整觀念、資深開發者快速查閱。

一、方法

定義語法


修飾符 返回值類型 方法名(參數類型 參數名, ...) {
    方法體;
    return 返回值;
}

特點

  • 封裝功能邏輯,提升複用性
  • 只有被呼叫才執行
  • void 表示無返回值,最後 return 可省略
  • 方法內只能呼叫方法,不能定義方法

main 方法

  • 程式入口,JVM 自動呼叫
  • public static void main(String[] args)
  • 保證類別可獨立執行

方法重載

同一類別中,方法名相同、參數列表不同(個數、型別、順序),與返回值無關:


int add(int a, int b) { return a + b; }
int add(int a, int b, int c) { return add(a, b) + c; }
double add(double a, double b) { return a + b; }
// void add(int a, int b) {} // 錯誤:僅返回值不同無法重載

可變參數


public static void printNum(double... numbers) {
    System.out.println("第一個:" + numbers[0]);
    for (int i = 1; i < numbers.length; i++) {
        System.out.println("其他:" + numbers[i]);
    }
}
// 呼叫:printNum(1, 2, 9, 5, 8); 或 printNum(new double[]{1, 2, 6});

finalize() 方法

物件被 GC 回收前呼叫,用於清理資源(如關閉檔案)。不建議依賴,應使用 try-with-resources 或 AutoCloseable。

二、建構子

  • 與類別同名、無返回值
  • 建立物件時自動執行,先執行欄位初始化再執行建構子
  • 無自定建構子時,編譯器提供無參預設建構子
  • 可重載,支援多種初始化方式

三、修飾符總覽

存取修飾符

修飾符同類同包子類(異包)非子類(異包)
public✓✓✓✓
protected✓✓✓✗
default (無)✓✓✗✗
private✓✗✗✗

類別修飾符

  • final:不可被繼承
  • abstract:抽象類別,不可實例化,可含抽象方法

變數修飾符

  • static:類別變數,共享單一拷貝
  • final:常數,僅能指派一次
  • transient:序列化時忽略
  • volatile:多線程可見性保證

方法修飾符

  • static:類別方法,無需實例呼叫
  • final:不可被覆寫
  • abstract:抽象方法,無方法體
  • synchronized:同步鎖
  • native:原生實現 (JNI)

四、繼承

關鍵字

  • extends:單一繼承類別
  • implements:實作介面,可多重

特性

  • 子類擁有父類非 private 成員
  • 子類可擴充屬性方法、覆寫父類方法
  • Java 單繼承、多層繼承 (A→B→C)
  • 提高耦合度,慎用

super / this

  • super:參考父類成員、呼叫父類建構子
  • this:參考當前物件、呼叫本類建構子
  • 建構子中 super() 必須是第一行,與 this() 二擇一

final 關鍵字

  • 修飾類:不可繼承
  • 修飾方法:不可覆寫
  • 修飾變數:常數

五、方法覆寫 vs 重載

比較項覆寫重載
發生位置父子類別同一類別
方法名相同相同
參數列表必須相同必須不同
返回型別相同或协变可不同
存取權限不得縮小可任意
拋出異常不得擴大可任意
多態性執行期多態編譯期多態

六、多態

三大必要條件

  1. 繼承關係
  2. 方法覆寫
  3. 父類參考指向子類物件

優點

  • 消除型別耦合
  • 可替換性、可擴展性、靈活性、簡化性

存取規則

  • 成員變數:編譯看左邊(參考型別),執行也看左邊 → 父類
  • 非靜態方法:編譯看左邊,執行看右邊(實際物件) → 子類
  • 靜態方法:編譯看左邊,執行也看左邊 → 父類

向上/向下轉型


Animal a = new Cat();     // 向上轉型 (隱式)
a.eat();                  // 呼叫 Cat.eat()

Cat c = (Cat) a;          // 向下轉型 (強制)
c.catchMouse();           // 呼叫 Cat 專有方法

七、抽象類別

  • abstract class:含抽象方法的類別必須宣告為 abstract
  • 不可實例化,僅供繼承
  • 抽象方法:無方法體,以分號結尾
  • 子類必須實作所有抽象方法,或繼續宣告為 abstract
  • 建構子、靜態方法不可為 abstract

八、封裝

  • 私有欄位 + public getter/setter
  • 優點:降低耦合、隱藏實現細節、精確控制存取、提升安全性
  • JavaBean 規範:私有欄位、無參建構子、getter/setter 命名規範

九、介面

特性

  • 隱含 public abstract 方法
  • 欄位隱含 public static final (常數)
  • 無建構子、不可實例化
  • 類別用 implements 實作,可多重實作
  • 介面可繼承多個介面 (extends A, B)

介面 vs 抽象類別

項目抽象類別介面
方法實作可有非抽象方法Java 8 前不可,8+ 可 default/static
欄位型別任意僅常數
靜態程式碼塊可有不可有
繼承關係單繼承多重實作

十、包

  • 組織類別命名空間,避免名稱衝突
  • 目錄結構對應包名:package com.example.util; → com/example/util/
  • import pkg.* 或 import pkg.ClassName
  • 包聲明必須在源檔第一行
  • 無包聲明屬於 unnamed package

總結

Java 面向對象三大特性:封裝、繼承、多態。掌握修飾符存取規則、覆寫與重載差異、抽象類別與介面選型、包管理慣例,是寫出高內聚、低耦合、可維護 Java 代碼的基石。

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