首先我們先了解一下何時需要使用static
對一個相同的類別,產生多個物件時,每個物件都各自產生了自己的變數或方法,但是當我們想要所有物件都共用一個變數或方法,而不要各自擁有時,要怎麼做 ?。
對一個相同的類別,產生多個物件時,每個物件都各自產生了自己的變數或方法,但是當我們想要簡單操作某個變量,要怎麼做 ?。
舉例 :
若我們針對下列類別,建立了多個物件(Car)。
public class Car { //名稱 string name; //價錢 int price; //發售地點 string place; //取得價錢 int getprice() { return price; } } Car Audi = new Car(); Car Bmw= new Car();
每個物件(Audi、Bmw)都各自擁有自己的名稱、價錢、發售地點及方法。
被宣告static的成員,可以透過類別(Car)名稱( Car.place )取得,而非物件(Audi、Bmw)名稱取得(
例如:
System.out.println(Car.place);
要注意的是 :
- 因為static 方法並非物件所擁有,而是類別,因此呼叫時並不會傳入參考位置,理所當然不能使用this、super或者隱含this、super。
- static 方法不允許直接使用所屬類別的實體變量或方法(非static資料),因為實體的成員,必須與特定的物件關聯,簡單來說就是"static方法在任何物件中必須獨立存在,不能依靠物件",因此不允許使用所屬類別的實體變量或方法(非static資料)
public class Car { //名稱 string name; //價錢 int price; //發售地點 static string place; //取得價錢 static int getprice() { return this.price; } }
public class Car { //名稱 string name; //價錢 int price; //發售地點 static string place; //取得價錢 static int getprice() { return price; } }
留言
張貼留言