子类重写父类变量
当我们在父类和子类中创建一个具有相同名称的变量,并尝试使用持有子类对象的父类引用访问它时,我们会得到什么?
为了理解这一点,让我们考虑下面的示例,在该示例中,我们在Parent
和Child
类中都声明了一个具有相同名称的变量x
。
class Parent {
// Declaring instance variable by name `x`
String x = "Parent`s Instance Variable";
public void print() {
System.out.println(x);
}
}
class Child extends Parent {
// Hiding Parent class's variable `x` by defining a variable in child class with same name.
String x = "Child`s Instance Variable";
@Override
public void print() {
System.out.print(x);
// If we still want to access variable from super class, we do that by using `super.x`
System.out.print(", " + super.x + "\n");
}
}
现在,如果我们尝试使用以下代码访问x
,将打印什么System.out.println(parent.x)
Parent parent = new Child();
System.out.println(parent.x) // Output -- Parent`s Instance Variable
通常,我们会说Child
类将覆盖Parent
类中声明的变量&