【JAVA】類繼承對父類靜態變量的操作
對靜態變量的操作存在繼承時還是有一些模煳,做了個簡單的測試:
class Test { private String mName; public Test(String name) { setName(name); } public void setName(String name) { mName = name; } public String getName() { System.out.println(mName); return mName; } } class A { protected static String TAG = "A"; protected static Test mTest; public A() { } public Test getTest() { return mTest; } } class B extends A { protected static String TAG = "B"; public B() { mTest = new Test(TAG); } } class C extends A { protected static String TAG = "C"; public C() { mTest = new Test(TAG); } } public class Demo { public static void main(String[] args) { B b = new B(); C c = new C(); b.getTest().getName(); // print C c.getTest().getName(); // print C } }
JAVA 中如果繼承的父類中存在靜態變量,多個子類操作的還是同一個靜態變量地址,因此子類的操作是要相互覆蓋的。
如果子類重寫了父類的方法和靜態變量則專屬子類了,其它子類的操作也就不會相互覆蓋了。
最後更新:2017-04-03 12:55:50