问题描述
父类的静态变量会照原样继承到子类,还是会创建一个新变量?
例如,class A
和class B extends A
的静态计数器变量应赋予相同的值(如果我们没有为class B
定义新的计数器)?
解决方法
否,静态变量的行为不同于非静态变量。如果您使用继承的类之一更改静态变量的值,它将影响所有其他继承的类数据。
原因静态变量仅创建一次。即使创建多个对象,也不会一次又一次创建静态变量。它们在执行开始时创建并存储。每当您访问静态变量时,您都会获得相同的变量。
即
如果您以B.count或C.count的身份访问,则将获得相同的变量。
因此,只有一个变量,则无法在单个变量中单独维护两个对象的计数。