物件與類_知識點筆記

Pop_Rain發表於2017-06-22

1. 在一個原始檔中,只能有一個共有public類(也可以沒有,最多隻能有一個),但可以有任意數目的非共有類,且原始檔名必須與public類的名字相匹配;而每一個類都可以有main方法(這常用於對類進行單元測試),但是測試類(Employee)永遠不會執行,想要測試這個main,只需要執行java Employee即可

2. 構造器相關:

構造器與類同名

每個類可以有0、1、多個構造器

構造器沒有返回值

構造器總是伴隨著new操作一起呼叫

3. 靜態域與靜態方法:

static:屬於類,而不屬於類物件的變數和函式

靜態域:如果將域定義為static,則每個類中只有一個這樣的域(不加final可以改變,但大家一起共享),而每個物件對於所有的例項域(資料域)都有自己的一份拷貝。

private static int nextId = 1; 	//每個物件的static域都是共享這一個域
private int id;  //每個物件的例項域都有自己的一份拷貝
換句話說,如果有1000個Employee類的物件,則有1000個例項域id,但只有一個靜態域nwxtId。即使沒有物件,靜態域nextId也存在,它屬於類不屬於物件

靜態方法:----不能操作物件(雖然使用物件也可以呼叫類的靜態方法,但容易混淆並且與個別物件毫無關係,因此建議使用類名呼叫靜態方法)

靜態方法是一種不能向物件實施操作的方法(eg. Math.pow()),在運算時,不使用任何物件。可以認為靜態方法是沒有this引數的方法(在一個非靜態方法中,this參數列示這個 方法的隱式引數)

靜態方法不能訪問例項域(因為不能操作物件),但可以訪問靜態域,如下:

public static int getID()
{
	return nextId;   //public static int nextId;
}
可以通過類名呼叫靜態方法:

Employee.getID();

在下面兩種情況下使用靜態方法:

一個方法不需要訪問物件狀態,其所需引數都是通過顯式引數提供(Math.pow(2,3))

一個方法只需要訪問類的靜態域,而不訪問例項域( Employee.getID(); )

相關文章