封裝(Encapsulation)是物件導向程式設計(OOP)的三大基礎特性之一,另外兩個是繼承(Inheritance)和多型(Polymorphism)。封裝是一種將數據(屬性)和操作該數據的方法(函數)綁定在一起的機制,目的是保護對象的狀態不被外部訪問和修改的不當方式。
意義:
數據隱藏:封裝允許對象隱藏其內部狀態和實現細節,只暴露有限的操作接口給外部使用。這種數據隱藏的特性有助於減少系統的複雜性。
減少耦合:封裝有助於將系統中的各個部分解耦,使得每部分可以獨立地開發和測試,從而提高系統的模塊化程度和維護性。
增加安全性:通過封裝,可以對數據進行控制和驗證,防止外部直接訪問,保護對象免受不合理的狀態變更。
特性:
訪問修飾符:程式語言通過訪問修飾符(如 public、private、protected)來實現封裝。公開(public)接口定義了對象如何與外界交互;私有(private)成員和保護(protected)成員則隱藏了實現細節。
Getter和Setter方法:通常通過公開的方法(getter和setter)來訪問和修改私有數據成員。這些方法不僅提供了一個數據訪問的接口,還可以加入邏輯來驗證數據和保持對象狀態的一致性。
抽象數據類型:封裝有時也被視為一種抽象,因為它將數據的具體實現抽象化了。用戶只需知道對象提供了哪些功能,不需要知道這些功能是如何實現的。