instanceof 運算符的陷阱
- instanceof 它用于判斷前面的對象是否是后面的類或其子類予弧、實現(xiàn)類的實例。如果是返回 true,否則返回 false勋磕。
- instanceof 運算符前面操作數(shù)的編譯時類型必須是:
- 要么與后面的類相同
- 要么是后面類的父類
- 要么是后面類型的子類
構造器陷阱
- 構造器是 Java 中每個類都會提供的一個“特殊方法”苔货。構造器負責對 Java 對象執(zhí)行初始化操作犀概,不管是定義實例變量時指定的初始值,還是在非靜態(tài)初始化代碼塊中所做的操作夜惭,實際上都會被提取到構造器中執(zhí)行姻灶。
- 構造器不能聲明返回值類型,也不能使用void聲明構造器沒有返回值诈茧。
構造器創(chuàng)建對象嗎
- 構造器并不會創(chuàng)建 Java 對象产喉,構造器只是負責執(zhí)行初始化,在構造器執(zhí)行之前敢会,Java 對象所需要的內存空間曾沈,是由 new 關鍵字申請出來的。絕大部分時候鸥昏,程序使- 用 new 關鍵字為一個 Java 對象申請空間之后塞俱,都需要使用構造器為這個對象執(zhí)行初始化,但在某些時候吏垮,程序創(chuàng)建 Java 對象無需調用構造器障涯,如下:
- 使用反序列化的方式恢復 Java 對象
- 使用 clone 方法復制 Java 對象
到底調用哪個重載方法
第一階段 JVM 將會選取所有可獲得并匹配調用的方法或者構造器
第二個階段決定到底要調用哪個方法罐旗,此時 JVM 會在第一階段所選取的方法或者構造器中再次選取最精確匹配的那一個。
方法重寫的陷阱
- 無法重寫父類 private 方法唯蝶。如果子類有一個與父類 private 方法具有相同方法名九秀、相同形參列表、相同返回值類型的方法粘我,依然不是重寫鼓蜒,只是子類定義了一個與父類相同的方法。
static 關鍵字
- static 可以修飾類中定義的成員:field涂滴、方法友酱、內部類、初始化代碼塊柔纵、內部枚舉類
靜態(tài)方法屬于類
- 被 static 修飾的成員(field缔杉、方法、內部類搁料、初始化塊或详、內部枚舉類)屬于類本身,而不是單個的 Java 對象郭计。靜態(tài)方法也是屬于類霸琴。