iT邦幫忙

2024 iThome 鐵人賽

DAY 21
0
自我挑戰組

從免費網路資源中入門java系列 第 21

【Day21】Java - 封裝(Encapsulation)

  • 分享至 

  • xImage
  •  

前兩篇講到了Java的存取修飾子,存取修飾子就是用來達成「封裝」這件事的,封裝的目的是利用控制類別內部成員(如變數和方法)的存取範圍,並透過public的方法(例如 getter 和 setter)來控制對內部屬性的訪問和修改

封裝的好處如下:

  1. 保護數據:避免外部直接改動內部屬性,防止意外或不正當的修改。
  2. 提高可讀性和可維護性:通過公開的接口來統一控制對內部屬性的訪問,讓程式碼結構更清晰,便於後續的擴展和維護。

下面例子,展示如何應用封裝:

public class Student {
    // 私有屬性,只能透過getter和setter來訪問
    private String name;
    private int age;

    // 建構式
    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // Getter 方法
    public String getName() {
        return name;
    }

    // Setter 方法
    public void setName(String name) {
        this.name = name;
    }

    // Getter 方法
    public int getAge() {
        return age;
    }

    // Setter 方法
    public void setAge(int age) {
        if (age > 0) {
            this.age = age;
        }
    }

    // 顯示學生資訊的方法
    public void displayInfo() {
        System.out.println("Name: " + name + ", Age: " + age);
    }
}
student.setAge(-5); // 透過 setter 可以避免不合規範的數據寫入

封裝(Encapsulation)是物件導向程式設計(OOP)的重要概念,目的是通過控制類別內部成員(如變數和方法)的存取範圍,來保護物件的狀態不被外界隨意改動。這是透過不同的修飾元(如 publicprivateprotected 等)來實現的。

進行封裝的主要目的統整如下:

1.隱藏類別內部的實作細節,避免外部直接修改物件的狀態,確保數據一致性。
2.通過提供受控的存取方式(如 getter 和 setter 方法),允許外部以受限的方式訪問和修改成員變數。
3.提高類別的可維護性和可擴展性,讓類別內部的實作可以隨時變動而不影響外部使用。


上一篇
【Day20】Java的非存取修飾子(Non-Access Modifiers)
下一篇
【Day22】Java - 多型(Polymorphism)
系列文
從免費網路資源中入門java30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言