Encapsulation的中文是封裝的意思,可以理解成將物件重新包裝或組裝。目的是將敏感的資料保護起來,避免其他程式存取。
為了將敏感的資料隱藏,我們可以將class的variables/attributes設定為private,同時加上public的get method 和 set method。
可以透過public的get method (Getter)和 set method(Setter)來存取或更新private的variables/attributes。
當然亦可以只加上get method (Getter)或set method(Setter),如果只使用get method (Getter) 就可以做到只能讀取(read-only)。如果只使用set method (Setter) 就可以做到只能寫入(write-only)。
例子:
public class Person {
private String name; // 將name設為private
// Getter
public String getName() {
return name;
}
// Setter
public void setName(String newName) {
this.name = newName;
}
}
可以在其他class透過getter/setter的方式存取或更新private的variables/attributes。
public class MyClass {
public static void main(String[] args) {
Person myObj = new Person();
myObj.name = "John"; // error
System.out.println(myObj.name); // error
myObj.setName("John"); // 更改name的值
System.out.println(myObj.getName()); //存取name的值
}
}