JAVA: 子类“覆盖”父类的成员变量
参考:JAVA: 子类“覆盖”父类的成员变量_子类覆盖父类成员变量-CSDN博客
public class Person {
static String name = "person";
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public class Dad extends Person {
static {
name = "Dad";
}
}
Person dad = new Dad();
System.out.println(dad.getName());
static
块会在类初始化而不是实例化时被执行,而父类中的static
成员变量会在子类static
块执行前就定义完成,所以子类初始化时会修改父类的成员变量值,子类实例化时自然得到的父类成员变量值也是修改过的,这样完成了“覆盖”
注:像下面这种方法是错误的
public class Dad extends Person {
name = "Dad";
}
JAVA中变量是不能在方法之外进行赋值操作的