Java 中什麼叫例項變數隱藏?


每次繼承一個超類時,超類的成員的副本都會在該子類中建立,你可以利用其物件來訪問超類成員。

如果超類和子類具有同名的例項變數,使用子類物件對其進行訪問時,子類的例項變數會隱藏超類的例項變數,與型別無關。此機制稱為欄位隱藏或例項變數隱藏。

但是,由於這會令程式碼變得複雜,不建議使用欄位隱藏。

示例

在以下示例中,我們有兩個類,其中一個類 (Super) 繼承另一個類 (Sub)。它們都具有兩個同名欄位 (name 和 age)。

使用 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

更新於: 2019 年 7 月 30 日

1000+ 次瀏覽

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.