關(guān)鍵字final、finally和方法finalize()
關(guān)鍵字final
1、聲明變量,阻止對(duì)其內(nèi)容進(jìn)行修改:
Java代碼
final int FILE_NEW = 1;
final int FILE_NEW = 1;
2、在繼承中使用:
a、阻止重寫(xiě)
Java代碼
class A {
final void meth() {
System.out.println("The final method.");
}
}
class B extends A {
void meth() { //錯(cuò)誤的,無(wú)法繼承。
System.out.println("Illegal.");
}
}
class A {
final void meth() {
System.out.println("The final method.");
}
}
class B extends A {
void meth() { //錯(cuò)誤的,無(wú)法繼承。
System.out.println("Illegal.");
}
}
聲明為final的方法有時(shí)候可以提高程序性能。
b、使用final阻止繼承
Java代碼
final class A {
//...
}
class B extends A { //錯(cuò)誤的
//...
}
final class A {
//...
}
class B extends A { //錯(cuò)誤的
//...
}
聲明一個(gè)類為final則隱式的聲明了它的所有方法也為final,聲明一個(gè)類既是abstract又是final是不合法的。
關(guān)鍵字finally
當(dāng)拋出異常的時(shí)候,方法內(nèi)的程序會(huì)采取一種突變的非線性的路線,這樣就改變了方法內(nèi)的正常程序流。根據(jù)方法的編碼形式,異常可能使方法過(guò)早的返回。finally就是用來(lái)解決這種意外事件的。 finally創(chuàng)建一個(gè)代碼塊,該代碼將在執(zhí)行完成try/catch塊之后執(zhí)行try/catch塊后面的代碼之前被執(zhí)行。無(wú)論是否拋出異常,finally塊都將執(zhí)行。如果拋出異常,即使沒(méi)有catch語(yǔ)句匹配這個(gè)異常,finally塊也將執(zhí)行。
方法finalize()
在撤銷一個(gè)對(duì)象的時(shí)候,有時(shí)候需要完成一些操作。比如:一個(gè)對(duì)象正持有某些非Java資源,要確保在對(duì)象被銷毀之前釋放這些資源。為處理這種情況Java提供了一種稱為結(jié)束(finalization)的機(jī)制。使用結(jié)束,可以定義特殊的動(dòng)作,這種動(dòng)作在一個(gè)對(duì)象要被垃圾收集器收回時(shí)執(zhí)行。要給一個(gè)類添加結(jié)束器,只需定義finalize()方法。
Java代碼
protected void finalize()
{
// finalization code here
}
protected void finalize()
{
// finalization code here
}
posted @ 2008-10-31 09:46 Jesin 閱讀(301) | 評(píng)論 (0) | 編輯 收藏