封裝三步驟
- 屬性
private 隱藏
- 提供
public getter/setter
- 在 setter 中加入業務驗證邏輯
包機制
- 作用:管理類檔案、解決同名衝突。
- 宣告:
package com.example.demo; (必須為源檔第一行)。
- 導入:
import com.example.demo.MyClass; 或 import com.example.demo.*;。
- 命名規範:全小寫,域名反轉 (如
com.company.project)。
四大存取修飾符對比
| 修飾符 | 同類 | 同包 | 子類(不同包) | 其他 |
| private | ✓ | ✗ | ✗ | ✗ |
| default (無) | ✓ | ✓ | ✗ | ✗ |
| protected | ✓ | ✓ | ✓ | ✗ |
| public | ✓ | ✓ | ✓ | ✓ |
this 關鍵字
- 代表當前物件實例。
- 區分同名屬性與參數:
this.name = name;
- 呼叫本類其他建構子:
this(...) (必須為建構子第一行)。
內部類別完整分類
| 類型 | 定義位置 | 特點 | 建立語法 |
| 成員內部類 | 類內部、方法外 | 可用任意修飾符;持有外部類引用;可存取外部所有成員 | Outer.Inner in = new Outer().new Inner(); |
| 靜態內部類 (巢狀類) | 類內部、方法外 | static 修飾;無外部類引用;只能存取外部 static 成員 | Outer.Inner in = new Outer.Inner(); |
| 方法區域內部類 | 方法內部 | 僅在方法內可見;不可用修飾符;只能存取 final/效果上 final 的區域變數 | 方法內 new Inner() |
| 匿名內部類 | 表達式中 | 無名稱;繼承類或實作介面;常用於事件監聽、執行緒建立 | new Interface() { ... } |
.class 檔案命名規則
編譯後產生 Outer.class、Outer$Inner.class、Outer$1.class (匿名類)。