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+ 次浏览

开启你的职业生涯

通过完成课程获得认证

开始学习
广告