建立物件時,類別的所有資料成員優先初始化:
int 預設為 0,boolean 為 false,引用型別為 null。static 變數在 main 執行前初始化。採用「自上而下、靜態先於非靜態」原則:
Object)。注意:每層父類別的預設建構子呼叫前,會先完成該層的非靜態成員初始化。
this(...) 呼叫時,必須置於第一行,且每個建構子僅能呼叫一次其他建構子。| 修飾符 | 同類 | 同包 | 子類(異包) | 非子類(異包) |
|---|---|---|---|---|
public | ✓ | ✓ | ✓ | ✓ |
protected | ✓ | ✓ | ✓ | ✗ |
default(包私有) | ✓ | ✓ | ✗ | ✗ |
private | ✓ | ✗ | ✗ | ✗ |
補充:private 建構子可實現單例模式或工廠模式,阻止外部直接 new 實例。
abstract 方法的類別必須宣告為 abstract。private(需被子類覆寫)。public static final(常數),需顯式賦值。public abstract(Java 8 前),實作類方法必須為 public。public 介面檔名需與介面名一致。extends 多個介面)。final 關鍵字的三重語義override),可被多載(overload)。final,但欄位不強制。private 成員。建立語法:Outer.Inner in = outer.new Inner()。final 或 effectively final 區域變數。除 RuntimeException 及其子類(非受檢異常)外,所有異常必須 捕獲 或 拋出宣告(throws)。這是 Java 強制錯誤處理的基石機制。