【发布时间】:2019-04-28 00:49:57
【问题描述】:
我的 Base123 类中有一个静态变量
class Base123 {
public static int statvar;
}
我有一个派生类Inheritance111,它扩展了Base123
public class Inheritance111 extends Base123 {
public static void main(String[] args) {
System.out.println(Inheritance111.statvar);
System.out.println(Base123.statvar);
Base123.statvar=10;
System.out.println(Inheritance111.statvar);
System.out.println(Base123.statvar);
System.out.println(statvar);
Inheritance111.statvar=20;
System.out.println(Inheritance111.statvar);
System.out.println(Base123.statvar);
System.out.println(statvar);
}
}
我得到上述代码的输出为:
0 0 10 10 10 20 20 20
对于一个类,静态变量在该类的所有对象之间共享。但是当一个类被扩展时,子类中继承的变量也是同一个变量吗?由于使用
所做的更改Inheritance111.statvar=20;
正在更改Base123.statvar 的值。
【问题讨论】:
-
静态变量不会被继承。不代表不能访问。你试过那样做吗?你得到了什么结果?
-
静态变量在该类的所有对象之间共享,因为它属于类信息。
-
@Stultuske 如果我给 System.out.println(statvar);我从 Derived 类中看到了静态变量的值。
-
@Stultuske 那你怎么称呼它?
sharing课间? -
@Eugene 为什么我要给它起个名字?静态成员不被继承。这并不意味着它们不能被使用。然而,这确实意味着,当它们在子类中重新定义时,它们不会覆盖,而是隐藏原来的。
标签: java inheritance static-variables