內部類(非靜態嵌套類)持有外部類引用,可訪問外部私有成員。四大核心價值:
外部類已實現 InterfaceA,內部類可獨立實現 InterfaceB,互不干擾。彌補 Java 無多重繼承的缺憾。
將「僅服務於外部類」的輔助類隱藏在內部,包級別不可见,降低耦合。如 HashMap.Node、ArrayList.Itr。
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
outerMethod(); // 直接訪問外部方法/字段
}
});
匿名內部類簡化監聽器註冊,無需額外字段傳遞上下文。
new Thread(new Runnable() {
public void run() {
// 直接用外部 final/效果上 final 變量
}
}).start();
「高內聚、低耦合」:若類邏輯緊密依賴外部類上下文 → 非靜態內部類;否則優先考慮頂層類或靜態內部類。