在Java中,字段覆蓋和隱藏是面向對象編程中的兩個重要概念。在某些情況下,子類中的字段可能會覆蓋父類中的相同字段;而在另一些情況下,子類中的字段可能會隱藏父類中的相同字段。
字段覆蓋指的是當子類中的字段與父類中的字段具有相同的名稱和類型時,子類中的字段會覆蓋父類中的字段。子類的對象訪問這個字段時,會訪問到子類中的字段,無法訪問到父類中的同名字段。
class A { int x = 1; } class B extends A { int x = 2; void printX() { System.out.println(x); // 輸出2 System.out.println(super.x); // 輸出1 } } B b = new B(); b.printX();
字段隱藏指的是當子類中的字段與父類中的字段具有相同的名稱但不同類型時,子類中的字段會隱藏父類中的字段。子類的對象訪問這個字段時,會訪問到子類中的字段,無法訪問到父類中的同名字段。
class A { int x = 1; } class B extends A { double x = 2.0; void printX() { System.out.println(x); // 輸出2.0 System.out.println(super.x); // 輸出1 } } B b = new B(); b.printX();
需要注意的是,雖然子類中的字段可以覆蓋或隱藏父類中的同名字段,但在使用時應該盡量避免這種情況的發生,建議在子類中使用不同的字段名。