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