在Java中,子类可以继承父类的非私有成员变量和方法。但是,静态成员变量(也称为类变量)是特殊的,因为它们属于类本身,而不是类的实例。这意味着,无论创建多少个子类实例,静态成员变量只会在内存中存在一份副本。
当子类继承父类的静态成员变量时,它实际上是在继承一个引用,该引用指向父类中定义的静态成员变量的内存地址。因此,如果子类试图修改继承自父类的静态成员变量,它实际上会修改父类中的那个变量,而不是在子类中创建一个新的变量。
下面是一个简单的例子来说明这个概念:
class Parent {
public static int staticVar = 10;
}
class Child extends Parent {
public void modifyStaticVar() {
staticVar = 20; // 修改继承自父类的静态成员变量
}
}
public class Main {
public static void main(String[] args) {
System.out.println("Before modification:");
System.out.println("Parent staticVar: " + Parent.staticVar);
System.out.println("Child staticVar: " + Child.staticVar);
Child child = new Child();
child.modifyStaticVar();
System.out.println("After modification:");
System.out.println("Parent staticVar: " + Parent.staticVar);
System.out.println("Child staticVar: " + Child.staticVar);
}
}
输出结果:
Before modification:
Parent staticVar: 10
Child staticVar: 10
After modification:
Parent staticVar: 20
Child staticVar: 20
从输出结果可以看出,在子类Child中修改静态成员变量staticVar的值,实际上修改的是父类Parent中的staticVar。因此,无论是通过父类还是子类访问staticVar,都会得到相同的值。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。