<aside> 📘
封裝是物件導向的一個核心概念,它將類別的屬性設為私有(private
)或受保護(protected
),並通過公有(public
)的方法提供受控的訪問權限。封裝的目的在於保護資料的完整性和實現類別的內部邏輯隱藏。
</aside>
private
修飾符private
修飾符用於將屬性或方法限制為僅能在類別內部訪問,外部類別或子類別無法直接存取。
private
修飾符程式碼:
public class Main {
public static void main(String[] args) {
Person person = new Person();
// 透過 setter 設定屬性值
person.setName("Alice");
person.setAge(25);
// 透過 getter 獲取屬性值
System.out.println("姓名:" + person.getName()); // 姓名:Alice
System.out.println("年齡:" + person.getAge()); // 年齡:25
// 無法直接訪問私有屬性
// person.name = "Bob"; // 錯誤,無法訪問私有屬性
}
}
class Person {
private String name; // 私有屬性
private int age; // 私有屬性
// Getter 和 Setter
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
if (age > 0) { // 驗證條件
this.age = age;
}
}
}
輸出:
姓名:Alice
年齡:25
protected
修飾符protected
修飾符允許屬性或方法在子類別和同一個包中的其他類別中訪問,但對其他外部類別不可見。
protected
修飾符程式碼:
public class Main {
public static void main(String[] args) {
Dog dog = new Dog();
dog.name = "小黃"; // 可直接訪問受保護屬性
dog.eat(); // 可呼叫父類別的受保護方法
dog.bark(); // 呼叫子類別方法
}
}
class Animal {
protected String name; // 受保護的屬性
protected void eat() { // 受保護的方法
System.out.println(name + " 正在吃東西");
}
}
class Dog extends Animal {
public void bark() {
System.out.println(name + " 正在汪汪叫");
}
}
輸出:
小黃 正在吃東西
小黃 正在汪汪叫
public
修飾符public
修飾符使屬性或方法可以被任何地方的其他類別訪問,包括不同包中的類別。
public
修飾符