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

Java 封裝完整教學:private 修飾子、getter/setter 方法、this 關鍵字與四大優勢詳解

     編輯:Java 程式設計入門

Java 封裝完整教學


在面向物件程式設計中,封裝是將抽象介面的實作細節包裝、隱藏的方法。可視為保護屏障,防止外部程式碼隨意存取類別內部程式碼與資料。存取必須透過嚴格介面控制。


封裝四大優勢

  1. 降低耦合度
  2. 類別內部結構可自由修改
  3. 對成員變數進行精確控制
  4. 隱藏資訊、實作細節

實現 Java 封裝兩步驟

1. 限制屬性可見性(通常設為 private)

public class Person {
    private String name;
    private int age;
}

如此 name、age 僅本類可存取,其他類無法直接訪問,達成資訊隱藏。

2. 提供公共 getter/setter 方法

public class Person {
    private String name;
    private int age;

    public int getAge() { return age; }
    public String getName() { return name; }
    public void setAge(int age) { this.age = age; }
    public void setName(String name) { this.name = name; }
}

this 關鍵字解決實例變數(private String name)與區域變數(setName(String name))同名衝突。


完整封裝類別範例:EncapTest.java

public class EncapTest {
    private String name;
    private String idNum;
    private int age;

    public int getAge() { return age; }
    public String getName() { return name; }
    public String getIdNum() { return idNum; }
    public void setAge(int newAge) { age = newAge; }
    public void setName(String newName) { name = newName; }
    public void setIdNum(String newId) { idNum = newId; }
}

這些 public 方法是外部類別存取私有成員的唯一入口,慣稱 getter/setter 方法。


使用封裝類別:RunEncap.java

public class RunEncap {
    public static void main(String[] args) {
        EncapTest encap = new EncapTest();
        encap.setName("James");
        encap.setAge(20);
        encap.setIdNum("12343ms");
        System.out.print("Name: " + encap.getName() + " Age: " + encap.getAge());
    }
}

執行結果

Name: James Age: 20

最佳實務補充

  • 在 setter 中加入驗證邏輯(如年齡不可為負數)
  • 唯讀屬性僅提供 getter,不提供 setter
  • 可使用 final 修飾不可變欄位
  • Java Bean 規範建議遵循標準命名慣例(getXxx/setXxx、isXxx for boolean)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved