本帖最後由 鄭繼威 於 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實體在記憶體中單獨存放,不跟物件的變數存放在一起。
欄位、方法都是成員 |