更新時間:2022年07月26日11時20分 來源:傳智教育 瀏覽次數(shù):
如果在Java程序中使用static修飾屬性,則該屬性稱為靜態(tài)屬性(也稱全局屬性),靜態(tài)屬性可以使用類名直接訪問,訪問格式如下:
類名·屬性名
在學習靜態(tài)屬性之前,先來看一個案例,如文件3-13所示。
文件3-13 Example13.java
class Student { String name; //定義name屬性 int age; //定義age屬性 String school = "A大學"; //定義school屬性 public Student (String name,int age) { this.name = name; this.age = age; } public void info () { System.out.println ("姓名:" + this.name+", 年齡:"+this. age+", 學校:" + school); } } public class Example13 { public static void main (String[] args) { Student stul = new Student ("張三",18); //創(chuàng)建學生對象 Student stu2 = new Student ("李四",19); Student stu3 = new Student ("王五",20); stu1.info () ; stu2.info () ; stu3.info () ; } }
文件3-13中,第5~7行代碼聲明了Student類的有參構造方法,第9~11行代碼輸出了name和age屬性的值。第16~20行代碼分別定義了Student類的3個實例對象,并分別使用3個實例對象調用info()方法。
圖3-18 文件3-13的運行結果
在圖3-18中,3名學生均來自A大學。下面考慮一種情況:假設A大學改名為B大學,而且此Student類已經(jīng)產(chǎn)生了10萬個學生對象,那么意味著,如果要修改這些學生對象的學校信息,就需要把這10萬個對象中的學校屬性全部修改,共修改10萬遍,這樣肯定是非常麻煩的。
為了解決上述問題,可以使用static關鍵字修飾school屬性,將其變?yōu)楣矊傩?。這樣,school屬性只會分配一塊內存空間,被Student類的所有對象共享,只要某個對象進行了一次修改,全部學生對象的school屬性值都會發(fā)生變化。