1. 程式人生 > >Java構造方法和析構方法

Java構造方法和析構方法

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 程式設計裡面,一般不需要我們去寫析構方法,這裡只是瞭解一下就可以了。