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

Java 封裝核心原理與實戰:私有屬性、Getter/Setter、this 指針與構造方法重載

     編輯:Java 綜合教學

什麼是封裝?

封裝是將類的屬性私有化(private),對外僅暴露公共的存取方法(Getter/Setter),從而控制資料的讀寫邏輯,實現資訊隱藏與存取控制。

為什麼需要封裝?

  • 資料驗證:Setter 中可加入合法性檢查(如年齡 > 0)。
  • 維護性:內部實現變更(如改用 Map 儲存)不影響呼叫端。
  • 安全性:防止外部直接修改關鍵狀態導致不一致。

標準封裝範本

public class Person {
    private String name;   // 私有屬性
    private int age;

    // Getter
    public String getName() { return name; }
    public int getAge() { return age; }

    // Setter(含驗證)
    public void setName(String name) { this.name = name; }
    public void setAge(int age) {
        if (age > 0 && age < 150) this.age = age;
        else throw new IllegalArgumentException("年齡不合法");
    }
}

this 關鍵字詳解

  • 代表當前物件的引用,僅能在非靜態上下文使用。
  • 解決區域變數遮蔽成員變數:this.name = name;
  • 構造方法間互調:this(name, 18);(必須放首行)。

構造方法:物件初始化的守門員

語法規則

  1. 方法名與類名完全一致。
  2. 無返回類型(連 void 都不能寫)。
  3. new Class() 觸發調用。

為什麼需要構造方法?

避免「忘記設值」導致物件處於不完整狀態。構造方法強制在創建時完成必要初始化。

帶參構造方法(多態初始化)

public Person(String name) { this.name = name; }
public Person(String name, int age) { this(name); this.age = age; } // 串聯調用

方法重載 vs 構造方法重載

完整實戰範例

public class Student {
    private String id;
    private String name;
    private char gender;

    public Student() {}                          // 無參構造
    public Student(String id, String name) {     // 兩參構造
        this.id = id; this.name = name;
    }
    public Student(String id, String name, char gender) { // 三參構造
        this(id, name); this.gender = gender;    // 串聯
    }
    // Getter/Setter 省略
    public void print() { System.out.println(id + " " + name + " " + gender); }
}
// 使用
new Student("1", "Alice").print();
new Student("2", "Bob", 'M').print();

總結

封裝 = private 屬性 + 公共 Getter/Setter + 構造方法初始化。善用 this 消除歧義,透過重載提供多樣化的建構方式,是寫出健壯、可維護 Java 代碼的基石。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
特性方法重載構造方法重載
判斷依據參數列表(類型、個數、順序)同左
返回類型無關無返回類型
典型案例System.out.println() 多態不同參數創建不同初始狀態物件