1.使用 static 修飾的變量由該類的全體對象共享
1 public class TestStatic { 2 static int a; 3 4 public void setA(int a) { 5 this.a = a; 6 } 7 8 public void printA() { 9 System.out.println(a); 10 } 11 12 public static void main(String[] args) { 13 TestStatic t1 = new TestStatic(); 14 t1.setA(10); 15 t1.printA(); 16 17 TestStatic t2 = new TestStatic(); 18 t2.printA(); 19 } 20 }
輸出結果
10 10
t1 中我們把靜態變量 a 的值設為了 10,在 t2 中並沒有對 a 進行任何操作
我們可以清楚的看到被 static 修飾的變量是被該類的全體對象所共享的
2.在子類中如果沒有重新定義繼承自父類的靜態變量,那么子類和父類共享同一個靜態變量
(1)沒有在子類重新定義靜態變量 a
public class TestStatic2 extends Father{ public static void main(String[] args) { a++; System.out.println(a); } } class Father{ static int a = 10; }
11
(2)在子類中重新定義靜態變量 a
public class TestStatic2 extends Father{ static int a = 5; public static void main(String[] args) { a++; System.out.println(a); } } class Father{ static int a = 10; }
6
static 修飾的變量,在子類中如果沒有重新定義繼承自父類的靜態變量,那么子類和父類共享同一個靜態變量