Java基礎:第三十二講 靜態成員

來源:互聯網
上載者:User

Java是物件導向的語言,在開發的時候要以對象的方式來組織代碼,方法和屬性應該屬於某個對象,而不是獨立存在。

在Java中還存在一類方法和屬性,不屬於某個具體對象,而是多個對象共用的,稱為靜態方法或者靜態屬性。

1、靜態屬性

靜態屬性是某個類的所有對象共用的屬性,通過static關鍵字定義。下面的代碼定義了一個靜態屬性:

public Class Person(

   public static int count;

)

要訪問靜態屬性,可以通過對象名,還可以通過類名。下面的代碼都是正確的:

方式一:

Person.count = Person.count+1;

方式二:

Person person = new Person();

person.count++;

這與非靜態成員是不同的,非靜態成員只能通過對象名調用,每個對象都有自己對應的屬性,例如張三有自己的身高,李四有自己的身高。因為靜態成員是對應到類的,而非靜態成員是對應到對象的,每個對象都會有一個。假設,Person類執行個體化了6個對象,對於靜態成員,記憶體中只有一個空間來儲存這個屬性,而非靜態成員會有6個,每個對象一個。所以,靜態成員又稱為類成員,非靜態成員稱為對象成員。

執行個體:寫出下面代碼的輸出結果

Person p1 = new Person();

p1.count=10;

Person p2 = new Person();

p2.count=20;

System.out.println(p1.count);

System.out.println(p2.count);

答案:20 20滑鼠選中查看答案。

2、靜態方法

靜態方法屬於類的方法,不屬於某個具體對象的,所以靜態方法不能訪問非靜態成員。

靜態方法的定義,使用關鍵字static,下面定義了一個靜態方法,對count進行操作:

public static void setCount(int count){

      Person.count = count;

}

public static int getCount(){

   return count:

}

實際上,大家在課程已開始的時候就已經使用靜態方法了,記不記得main方法的定義?

靜態方法不能訪問非靜態屬性,下面的代碼就是錯誤的:

public int height;

public static int getHeight(){

   return height;

}

問題:什麼時候用靜態方法呢?

答案:如果方法執行過程中不使用對象的屬性(也就是非靜態成員變數),只是用靜態成員變數或者通過參數傳入的資訊,這時候方法的處理過程與對象無關,所以可以設定成靜態方法,並且應該設定成靜態方法。

滑鼠選中查看答案。

3、靜態初始化器

構造方法用於對成員變數進行初始化,靜態成員變數不屬於某個對象,如何對靜態成員變數進行初始化呢?使用靜態初始化器。下面就是一段靜態初始化器代碼:

static{

      count=0;

}

static引導的一對大括弧,括弧中包含對靜態成員的初始化代碼,這就是靜態初始化器,可以認為是比較特殊的方法,沒有傳回值類型,沒有參數,沒有方法名,因為它是在載入類的時候調用的。

注意:靜態初始化器中只能對靜態成員進行操作,不能對非靜態成員進行操作。

下一次介紹一個簡單的物件導向的例子。

上一次: 第三十一講 常量成員下一次: 第三十三講 父類與繼承李緒成 CSDN Blog:http://blog.csdn.net/javaeeteacher邀請您為好友:http://student.csdn.net/invite.php?u=124362&c=7be8ba2b6f3b6cc5

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.