標籤:
Java構造方法
類有一個特殊的成員方法叫作構造方法,它的作用是建立對象並初始化成員變數。在建立對象時,會自動調用類的構造方法。
構造方法定義規則:Java 中的構造方法必須與該類具有相同的名字,並且沒有方法的傳回型別(包括沒有void)。另外,構造方法一般都應用 public 類型來說明,這樣才能在程式任意的位置建立類的執行個體--對象。
樣本:下面是一個 Rectangle 類的構造方法,它帶有兩個參數,分別表示矩形的長和寬:
public class Rectangle {
public Rectangle(int w, int h) {
width = w;
height = h;
}
public Rectangle() {}
}
每個類至少有一個構造方法。如果不寫一個構造方法,Java 程式設計語言將提供一個預設的,該構造方法沒有參數,而且方法體為空白。如果一個類中已經定義了構造方法則系統不再提供預設的構造方法。
Java析構方法
當記憶體回收行程將要釋放無用對象的記憶體時,先調用該對象的finalize()方法。如果在程式終止前記憶體回收行程始終沒有執行記憶體回收操作,那麼記憶體回收行程將始終不會調用無用對象的finalize()方法。在Java的Object基類中提供了protected類型的finalize()方法,因此任何Java類都可以覆蓋finalize()方法,通常,在析構方法中進行釋放對象佔用的相關資源的操作。
JAVA 虛擬機器的記憶體回收操作對程式完全是透明的,因此程式無法預料某個無用對象的finalize()方法何時被調用。如果一個程式只佔用少量記憶體,沒有造成嚴重的記憶體需求,記憶體回收行程可能沒有釋放那些無用對象佔用的記憶體,因此這些對象的finalize()方法還沒有被調用,程式就終止了。
程式即使顯式調用System.gc()或Runtime.gc()方法,也不能保證記憶體回收操作一定執行,也就不能保證對象的finalize()方法一定被調用。
當記憶體回收行程在執行finalize()方法的時候,如果出現了異常,記憶體回收行程不會報告異常,程式繼續正常運行。
@Override
protected void finalize(){
System.out.println("in finalize");
}
在 Java 編程裡面,一般不需要我們去寫析構方法,這裡只是瞭解一下就可以了。
7.Java構造方法和析構方法