Board logo

標題: static 關鍵字基本觀念 [打印本頁]

作者: 鄭繼威    時間: 2023-9-6 01:28     標題: static 關鍵字基本觀念

本帖最後由 鄭繼威 於 2023-9-6 01:34 編輯

來看看一個程式片段:
class Ball {
    double radius;
    final double PI = 3.14159;
    ...
}
如果你建立了多個Ball物件,那每個Ball物件都會有自己的radius與PI成員:


不過我們都知道,圓周率其實是個固定的常數,不用每個物件各自擁有,你可以在PI上宣告static表示它屬於類別
class Ball {
    double radius;
    static final double PI = 3.141596;
    ...
}
被宣告為static的成員,不會讓個別物件擁有,而是屬於類別,如上定義後,如果建立多個Ball物件,每個Ball物件只會各自擁有radius:


成員 (member) 宣告時若使用關鍵字 static 修飾,該成員變成屬於類別 (class) 而非物件 (object) ,因此使用 static 就不需要先建立物件,只需透過類別即可使用。譬如:Math.PI 即為靜態的資料成員,而Math.pow() 即為靜態的方法成員。
我們舉例如下:例如同一個廠商生產的自行車,把自行車抽象為一個 類,物件就是每一輛自行車。每一輛自行車有價格、顏色等屬性,這些屬性每一輛自行車都不一樣,但是,他們的生產廠商都是一樣的,這個時候就可以把生產廠商定義成一個靜態型別。Static實體在記憶體中單獨存放,不跟物件的變數存放在一起。

欄位、方法都是成員




歡迎光臨 種子論壇 | 高雄市資訊培育協會學員討論區 (http://istak.org.tw/seed/) Powered by Discuz! 7.2