解釋下 Java 中的欄位隱藏?


每當你繼承一個超類,超類的成員的一個副本就會在子類中建立,並且你可以使用它的物件訪問超類成員。

如果超類和子類具有同名例項變數,如果你使用子類物件訪問它,則無論其型別如何,子類欄位都會隱藏超類的欄位。這種機制稱為欄位隱藏。

但是,由於它使程式碼變得複雜,因此不推薦欄位隱藏。

示例

在以下示例中,我們有兩個類:Super 和 Sub,它們相互擴充套件。它們都有兩個同名欄位(名稱和年齡)。

當我們使用 Sub 的物件列印這些欄位的值時,它將列印子類的值。

 線上演示

class Super{
   String name = "Krishna";
   int age = 25;
}
class Sub extends Super {
   String name = "Vishnu";
   int age = 22;
   public void display(){
      Sub obj = new Sub();
      System.out.println("Name: "+obj.name);
      System.out.println("age: "+obj.age);
   }
}
public class FieldHiding{
   public static void main(String args[]){
      new Sub().display();
   }
}

輸出

Name: Vishnu
age: 22

不過,如果你需要訪問超類的欄位,你需要使用 super 關鍵字,如下所示:

示例

 線上演示

class Super{
   String name = "Krishna";
   int age = 25;
}
class Sub extends Super {
   String name = "Vishnu";
   int age = 22;
   public void display(){
      Sub obj = new Sub();
      System.out.println("Name: "+obj.name);
      System.out.println("age: "+obj.age);
      System.out.println("Name: "+super.name);
      System.out.println("age: "+super.age);
   }
}
public class FieldHiding{
   public static void main(String args[]){
      new Sub().display();
   }
}

輸出

Name: Vishnu
age: 22
Name: Krishna
age: 25

更新於:2019 年 7 月 30 日

1K+ 瀏覽量

開啟您的職業生涯

完成課程並獲得認證

開始
廣告
© . All rights reserved.