垃圾回收
:在
Java
程序的生命周期中,
Java
運行時環境提供了一個系統的垃圾回收器線程,負責自動回收那些沒有引用與之相連的對象所占用的內存,這種內存回收的過程就叫做垃圾回收(
GC
)。當一個對象被創建時,
Java
的虛擬機(
JVM
)會為該對象分配一定的內存、調用該對象的構造方法并開始跟蹤該對象。當該對象停止使用時,
JVM
將通過垃圾回收器回收該對象所占用的內存。
需要注意的是,只有當一個對象不被任何引用類型的變量使用時,它的內存才可能被垃圾回收,即只有在沒有任何句柄指向一個對象時,該對象才成為垃圾;不能通過程序強迫垃圾回收立即執行,任何時候,程序員都不能通過程序強迫垃圾回收立即執行,但是可以通過
System.gc
()或
Runtime.gc
()方法提示垃圾回收器進行內存回收操作,但是這也不能保證調用該方法后,垃圾回收線程立即執行;當垃圾回收器將要釋放無用對象的內存時,先調用該對象的
finalize
()方法。
Java
利用
finalize
()方法撤銷無用對象。
finalize
()
方法包含在
java.lang.Object
包中。
finalize
方法只能在
Java
垃圾收集之前調用。當一個對象超過作用域時,就不能調用
finalize
方法。
接口
:接口是一種完全沒有實現的類,接口是方法定義和常量值的集合。
Java
通過接口使得處于不同層次甚至互不相關的類可以擁有相同的行為。從本質上講,接口是一種特殊的抽象類,通過利用關鍵字
interface
來指明一個類必須做什么,但是不需要明確該怎么做。在類的結構過程中可以實現多個接口,而且在類對接口的實現過程中,必須實現接口中所有的方法。
一個類只能有一個父類,而一個接口可以有多個父接口,父接口之間用逗號隔開。在接口中定義的常量可以被多個類共享,具有
public
、
final
、
static
屬性,也就是任意類可以訪問該變量;接口中止對方法進行聲明,沒有方法體,而且是用分號結尾,聲明的方法具有
public
和
abstract
屬性。一個類可以實現一個或多個接口,不同接口之間用逗號分開。
在類對接口實現的定義中,必須實現接口中所有方法。這種實現是“相對”的,既可以為接口中的方法提供實現代碼,也可以不提供代碼。如果不提供代碼,必須將該方法的框架完整寫出。如果一個類實現的是一個繼承其他接口的接口,則該類必須實現這個接口和棋父接口的所有方法,除非定義該類為抽象類。
?
??? 接口可以作為一種引用類型來使用,任何實現該接口的類的實例,都可以存儲在該接口類型的變量中,通過這些變量可以訪問類所實現的接口中的方法,
Java
運行時,系統會動態地決定應該使用哪個類中的方法。(接口可以理解為一種特殊類型的抽象類,不是一種基本類型的數據,當然就是引用類型的數據了。而實現了接口的類可以看作是接口的子類,在可以使用父類的地方都可以使用子類,此處的說法與之前提到的運行時多態是同一個問題。