當創建對象時,執行流程嚴格遵循:
關鍵點:基本類型默認值(int 為 0,boolean 為 false 等);對象引用默認 null;所有成員初始化完成後,才調用構造方法。
main 方法執行前初始化。以 Child extends Parent 為例:
super()。this(...) 或 super(...))必須是第一條語句,且只能調用一次。| 修飾符 | 同類 | 同包 | 子類(異包) | 非子類(異包) |
|---|---|---|---|---|
public | ✓ | ✓ | ✓ | ✓ |
protected | ✓ | ✓ | ✓ | ✗ |
default(無) | ✓ | ✓ | ✗ | ✗ |
private | ✓ | ✗ | ✗ | ✗ |
補充:無 public 修飾的類,僅能被同包類訪問;構造方法若為 private,外部類無法通過 new 創建實例(單例模式常用)。
abstract。private。public static final(常量),必須顯式賦值。public abstract;實現類中方法必須聲明 public。public 接口文件名必須與接口名一致。extends 多個接口);類實現接口用 implements,可實現多個接口(逗號分隔)。非靜態內部類實例需依附外部類實例:
Outer outer = new Outer();
Outer.Inner inner = outer.new Inner();
或在外部類方法中提供工廠方法返回內部類實例。
class Child extends Outer.Inner {
Child() {
new Outer().super(); // 顯式調用外部類實例的 super()
}
Child(Outer o) {
o.super(); // 另一種寫法
}
}
private 修飾(僅外部類可實現)。public。RuntimeException 及其子類(非受檢異常)可不捕獲、不拋出聲明。throws 聲明。class A extends B implements C, D。extends 關鍵字。掌握初始化順序、構造器鏈、訪問控制、抽象與接口契約、final 語義、內部類實例化機制及異常分類,是寫出健壯、可維護 Java 代碼的基石。建議在實戰中結合反編譯(javap -c)觀察字節碼,深化理解。