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

Java 面向對象核心(二):封裝機制詳解——從屬性隱藏到構造器、this、static 與重載

     編輯:Java 綜合教學

Java 面向對象核心(二):封裝機制詳解——從屬性隱藏到構造器、this、static 與重載

封裝、繼承、多態是面向對象三大支柱。本文深入剖析封裝的本質、實作細節及相關關鍵字機制,配合完整代碼示例,助你建立扎實的 OOP 基礎。

封裝的核心概念

  1. 數據與行為打包:將屬性與方法封裝為類,形成具備狀態與行為的數據類型。信息隱藏:隱藏內部實現細節,禁止外部直接訪問屬性,通過公開介面控制存取。
  2. 訪問控制:使用 private 修飾屬性,提供 public 的 getter/setter,並在其中加入邏輯驗證。

    訪問修飾符對照表

    修飾符同類同包子類其他
    public✓✓✓✓
    protected✓✓✓✗
    默認 (package-private)✓✓✗✗
    private✓✗✗✗

    屬性封裝標準範例

    public class Teacher {
        private String name;
        private int age;
    
        public void setName(String tname) { this.name = tname; }
        public String getName() { return name; }
    
        public void setAge(int tage) {
            if (tage < 25) {
                System.out.println("年齡太小了");
                age = 25;
            } else {
                age = tage;
            }
        }
        public int getAge() { return age; }
    }

    外部調用:

    Teacher t = new Teacher();
    t.setName("張三");
    t.setAge(10); // 觸發驗證,實際 age 設為 25
    System.out.println(t.getAge()); // 輸出 25

    構造方法詳解

    • 無參構造器:類未顯式聲明時系統自動提供,屬性初始化為默認值。
    • 帶參構造器:創建對象時直接賦值,覆蓋默認值。
    • 調用規則:new 操作符調用,先分配記憶體並默認初始化,再執行構造器代碼。

    this 關鍵字三大用法

    1. 區分同名屬性與參數:this.age = age;
    2. 構造器鏈調用:this() 必須置於構造器首行,調用本類其他構造器。返回當前對象引用:支援鏈式調用或作為參數傳遞。

    static 關鍵字深度解析

    特性靜態成員非靜態成員
    所屬類(類變量/類方法)對象(實例變量/實例方法)
    加載時機類加載時,優先於對象對象創建時
    共享性所有對象共享一份每個對象獨立擁有
    訪問方式類名.成員 或 對象.成員對象.成員
    限制不可用 this、不可直接訪問非靜態成員可訪問靜態與非靜態

    靜態代碼塊:static { ... },類加載時執行一次,用於靜態變量複雜初始化。

    方法重載

    同一類中,方法名相同但參數列表不同(類型、個數、順序),與返回類型無關。編譯器通過方法簽名區分。

    public class Printer {
        public void print(String content) { ... }
        public void print(int content) { ... }
        public void print(String str, int content) { ... }
        // public int print(int content) { ... } // 錯誤:僅返回類型不同不構成重載
    }

    最佳實踐總結

    • 屬性默認 private,暴露必要的 public getter/setter。
    • 構造器確保對象出生即合法,利用 this 消除歧義。
    • 工具方法、常量、單例模式等場景優先考慮 static。
    • 重載提升 API 易用性,但避免參數類型模糊導致調用混淆。

    封裝不僅是語法規範,更是「高內聚、低耦合」設計哲學的代碼體現。

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