首頁 > Java > java教程 > 瞭解物件導向程式設計中的封裝

瞭解物件導向程式設計中的封裝

Susan Sarandon
發布: 2025-01-04 08:06:39
原創
907 人瀏覽過

Understanding Encapsulation in Object-Oriented Programming

物件導向程式設計中的封裝

封裝是一種基本的物件導向程式設計概念,涉及將資料(欄位)和對單一單元(通常是類別)內的資料進行操作的方法(函數)進行捆綁。它限制對某些物件組件的直接訪問,從而更容易維護和保護程式碼。

封裝的好處

  1. 資料隱藏:內部狀態對外界隱藏,透過方法(getter 和 setter)控制存取。
  2. 改進的程式碼可維護性:可以對欄位或方法進行更改,而不會影響使用該類別的外部程式碼。
  3. 增強的安全性:透過限制對欄位的直接訪問,我們可以驗證資料並防止資料處於無效狀態。

程式碼範例:封裝實踐

// Encapsulation refers to restricting access of a class from the outside world
public class Person {
    private String name;
    private String profession;
    private double height;
    private int ID;
    private int age;

    // Constructor
    public Person(String name, String profession, double height, int iD, int age) {
        this.name = name;
        this.profession = profession;
        this.height = height;
        ID = iD;
        this.age = age;
    }

    // Getters and setters for accessing private fields
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getProfession() {
        return profession;
    }
    public void setProfession(String profession) {
        this.profession = profession;
    }
    public double getHeight() {
        return height;
    }
    public void setHeight(double height) {
        this.height = height;
    }
    public int getID() {
        return ID;
    }
    public void setID(int iD) {
        ID = iD;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }

    // Main method to demonstrate encapsulation
    public static void main(String[] args) {
        Person myPerson = new Person("Robert", "doctor", 130.4, 39, 23);

        // Accessing private fields through getter methods
        System.out.println(myPerson.getName());
        System.out.println(myPerson.getProfession());
        System.out.println(myPerson.getID());
        System.out.println(myPerson.getAge());
    }
}
登入後複製

守則解釋

私人領域

姓名、職業、身高、ID 和年齡欄位被宣告為私有。這使得它們無法直接從類別外部存取。

Getter 和 Setter

諸如 getName()、setName()、getProfession() 等公共方法以及其他方法充當私有欄位的受控存取點。這些方法允許外部程式碼安全地檢索和修改私有資料。

建構函數

建構函式在建立 Person 類別的物件時初始化欄位。這確保了物件以有效狀態啟動。

主要方法

main方法示範如何使用封裝。私有欄位透過 getter 方法間接存取。


範例中的好處

  1. 資料保護

    • 私有欄位無法直接存取或修改,防止意外或惡意變更。
  2. 受控存取

    • 透過使用設定器,您可以包含驗證邏輯以確保僅設定有效資料。例如:
     public void setAge(int age) {
         if (age > 0) {
             this.age = age;
         } else {
             System.out.println("Age must be positive.");
         }
     }
    
    登入後複製
  3. 程式碼彈性

    • 如果欄位的實作變更(例如,新增衍生欄位),則使用該類別的外部程式碼不受影響。

這個範例說明了封裝如何確保 Person 類別保持完整性並隱藏其實作細節,同時提供受控的互動介面。

以上是瞭解物件導向程式設計中的封裝的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板