將數據(屬性)與操作數據的方法綁定在一起,對內部細節隱藏,僅暴露公共接口。通過訪問修飾符(private、protected、public)控制可見性。
setter 中加入合法性檢查,保證對象狀態一致性public class Account {
private String id;
private double balance; // 私有,外部不可直接訪問
public String getId() { return id; }
public void setId(String id) { this.id = id; }
public double getBalance() { return balance; }
public void deposit(double amount) {
if (amount > 0) balance += amount; // 校驗
else throw new IllegalArgumentException("存款金額必須為正");
}
public boolean withdraw(double amount) {
if (amount > 0 && amount <= balance) {
balance -= amount;
return true;
}
return false;
}
}
子類獲取父類非私有屬性和方法,並可擴展或覆寫。Java 單繼承(extends),但可多實現接口(implements)。
private 成員不可繼承(但可通過公共 getter/setter 間接訪問)super()this:當前對象/構造器/類super:父對象/構造器/類this.field = field同一操作作用於不同對象,產生不同行為。三要素:
Animal a = new Cat())a.speak(),Cat 喵、Dog 汪instanceof 防 ClassCastExceptionclass Pet { void sound() { System.out.println("寵物叫聲"); } }
class Cat extends Pet { @Override void sound() { System.out.println("喵~"); } }
class Dog extends Pet { @Override void sound() { System.out.println("汪!"); } }
public class PolymorphismDemo {
public static void main(String[] args) {
Pet p1 = new Cat(); // 向上轉型
Pet p2 = new Dog();
p1.sound(); // 喵~
p2.sound(); // 汪!
// 向下轉型
if (p1 instanceof Cat) {
Cat c = (Cat) p1;
c.catchMouse(); // 子類特有方法
}
}
}

圖中 Employee 封裝薪資計算邏輯,Manager 繼承並覆寫 getBonus(),測試類通過 Employee 引用調用多態方法。