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

Java 面向對象三大特性深度解析:封裝、繼承與多態

     編輯:Java 綜合教學

一、封裝

定義

將數據(屬性)與操作數據的方法綁定在一起,對內部細節隱藏,僅暴露公共接口。通過訪問修飾符(private、protected、public)控制可見性。

作用

  1. 信息隱藏:如銀行賬戶密碼僅對持卡人可見
  2. 職責分離:調用者無需關心實現細節,降低認知負荷
  3. 易於維護:內部邏輯變更不影響外部調用,只要接口不變
  4. 數據校驗:setter 中加入合法性檢查,保證對象狀態一致性

代碼示例

public class Account {
    private String id;
    private double balance; // 私有,外部不可直接訪問

    public String getId() { return id; }
    public void setId(String id) { this.id = id; }

    public double getBalance() { return balance; }
    public void deposit(double amount) {
        if (amount > 0) balance += amount; // 校驗
        else throw new IllegalArgumentException("存款金額必須為正");
    }
    public boolean withdraw(double amount) {
        if (amount > 0 && amount <= balance) {
            balance -= amount;
            return true;
        }
        return false;
    }
}

二、繼承

定義

子類獲取父類非私有屬性和方法,並可擴展或覆寫。Java 單繼承(extends),但可多實現接口(implements)。

關鍵規則

  • private 成員不可繼承(但可通過公共 getter/setter 間接訪問)
  • 構造器不可繼承,但子類構造器默認調用 super()
  • 創建子類對象時,先隱式構造父類對象(無引用接收)
  • 子類可定義特有屬性/方法,實現功能擴展
  • 方法覆寫(Override):同名同參數,返回類型协變,拋出異常子集,訪問權限不低於父類

this 與 super

  • this:當前對象/構造器/類
  • super:父對象/構造器/類
  • 同名屬性/參數區分:this.field = field

三、多態

定義

同一操作作用於不同對象,產生不同行為。三要素:

  1. 繼承:存在父子類關係
  2. 覆寫:子類重新實現父類方法
  3. 向上轉型:父類引用指向子類對象(Animal a = new Cat())

特點

  • 編譯時看引用類型(父類),運行時看實際對象(子類)
  • 同樣調用 a.speak(),Cat 喵、Dog 汪
  • 向上轉型安全(JVM 自動),向下轉型需強轉並配合 instanceof 防 ClassCastException
  • 子類特有方法/屬性在父類引用下不可見,需向下轉型

代碼演示

class Pet { void sound() { System.out.println("寵物叫聲"); } }
class Cat extends Pet { @Override void sound() { System.out.println("喵~"); } }
class Dog extends Pet { @Override void sound() { System.out.println("汪!"); } }

public class PolymorphismDemo {
    public static void main(String[] args) {
        Pet p1 = new Cat(); // 向上轉型
        Pet p2 = new Dog();
        p1.sound(); // 喵~
        p2.sound(); // 汪!

        // 向下轉型
        if (p1 instanceof Cat) {
            Cat c = (Cat) p1;
            c.catchMouse(); // 子類特有方法
        }
    }
}

綜合示例:同時體現三大特性

圖中 Employee 封裝薪資計算邏輯,Manager 繼承並覆寫 getBonus(),測試類通過 Employee 引用調用多態方法。

設計原則建議

  • 高內聚、低耦合:封裝變化點,繼承穩定結構,多態擴展行為
  • 組合優於繼承:優先用接口組合(策略模式),減少繼承層次
  • 里氏替換原則:子類必須能替換父類而不破壞程序語義
  • 接口隔離:多態依賴抽象接口,而非具體實現類
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved