1. 靜態(tài)域
如果將域定義為 static萧锉,每個(gè)類中只有一個(gè)這樣的域殃饿。而每一個(gè)對象對于所有的實(shí)例域都有自己的一份拷貝蔗彤。直接看代碼吧。
class Employee {
private static int NextId = 1;
private int id;
}
這里給 Employee 類添加了一個(gè)實(shí)例域 id 和一個(gè)靜態(tài)域 NextId』浚現(xiàn)在每一個(gè)雇員對象都有一個(gè)自己的 id 域,但這個(gè)類的所有實(shí)例域都將共享一個(gè) NextId 域逊谋。即使我們沒有任何雇員對象擂达,這個(gè)靜態(tài)域 NextId 也是存在的。它屬于類胶滋,而不屬于任何一個(gè)獨(dú)立的對象板鬓。
我們制造一個(gè)新的 Employee 對象 aaron,并且調(diào)用一個(gè)方法究恤。
public void setId() {
id = NextId;
NextId ++;
System.out.println("NextId: "+NextId +" Id: " + id);
}
Employee aaron = new Employee();
aaron.setId();
其實(shí)我們做的操作相當(dāng)于:
aaron.id = Employee.NextId;
Employee.NextId ++;
2. 靜態(tài)方法
靜態(tài)方法是一種不能對對象實(shí)施操作的方法俭令。
public class ArrayIndex {
public static void f() {
System.out.println("hello AaronYu");
}
public void g() {
System.out.println("hello aaron");
}
public static void main(String[] args) {
f();
ArrayIndex.f();
ArrayIndex array = new ArrayIndex();
array.g();
// ArrayIndex.g();
array.f();
}
}
上面的代碼中我構(gòu)造了一個(gè)靜態(tài)方法和一個(gè)實(shí)例方法作為對照。
靜態(tài)方法我們可以直接調(diào)用部宿,或者通過類名調(diào)用抄腔。如 f();
ArrayIndex.f(); 或者通過對象調(diào)用,如 array.f(); 不過不建議通過這種方法調(diào)用理张,我建議通過類名調(diào)用赫蛇。
對于實(shí)例方法,我們要構(gòu)造一個(gè)對象如 array 來調(diào)用實(shí)例方法涯穷,如 array.g(); 會(huì)打印輸出: hello aaron
System.out.println("點(diǎn)個(gè)喜歡棍掐!歡迎關(guān)注我!");