java继承和多态之成员变量隐藏
时间: 2023-11-12 07:05:46 浏览: 100
在Java中,当子类中定义了与父类同名的成员变量时,子类的成员变量会隐藏父类的成员变量,也就是说在子类中无法直接访问父类的同名成员变量。
例如:
```java
class Animal {
String name = "Animal";
}
class Dog extends Animal {
String name = "Dog";
}
public class Test {
public static void main(String[] args) {
Animal animal = new Dog();
System.out.println(animal.name);
}
}
```
输出结果为:
```
Animal
```
这是因为在`Dog`中定义了一个同名的成员变量`name`,因此在`Dog`对象中访问`name`时,优先访问`Dog`中的成员变量,而不是`Animal`中的成员变量。
如果想访问父类中被隐藏的成员变量,可以使用`super`关键字进行访问:
```java
class Animal {
String name = "Animal";
}
class Dog extends Animal {
String name = "Dog";
public void print() {
System.out.println(super.name);
}
}
public class Test {
public static void main(String[] args) {
Dog dog = new Dog();
dog.print();
}
}
```
输出结果为:
```
Animal
```
在`Dog`的`print`方法中使用了`super.name`访问了父类中被隐藏的成员变量`name`。
阅读全文