1.final
final修飾類,說明這個類別不能被繼承,是以個頂層類別。
final修飾變量,說明這個變數是常數。
final修飾法,表示這個方法不能被重寫,不過可以衝在final方法。
例如有個基底類別Person,裡面有一個public final void eat()方法,可以在Person類別中重載同名方法,例如public void eat(String name,int age)。假如有一個子類別Student,那麼在Student中可以override父類別的非final方法,但是不能override final方法。
Person
複製代碼代碼如下:
package test2;
public class Person {
private String name;
private int age;
public final void eat()
{
System.out.println("this is in person class");
}
public void eat(String name,int age)
{
}
}
Student
複製代碼代碼如下:
package test2;
public class Student extends Person {
@Override
public void eat(String name, int age) {
// TODO Auto-generated method stub
super.eat(name, age);
}
}
常見的final方法就是Object類別累中的wait()和notify()方法。
2.finally
finally是關鍵字,在異常處理中,try子句中執行需要執行的內容,catch子句用來擷取異常,finally子句表示不管是否發生異常,都會執行。 finally可有可無。但是try...catch必須成對出現。
3.finalize()
finalize() 方法名,Object類別的方法,Java 技術允許使用finalize() 方法在垃圾收集器將物件從記憶體中清除出去之前做必要的清理工作。這個方法是由垃圾收集器在決定這個物件沒有被引用時對這個物件進行呼叫。 finalize()方法是在垃圾收集器刪除物件之前對這個物件呼叫的子類別覆寫finalize() 方法以整理系統資源或執行其他清理操作。
程式碼實例:
複製代碼代碼如下:
class Person
{
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String toString()
{
return "姓名:"+this.name+",年齡:"+this.age;
}
public void finalize() throws Throwable{//物件釋放空間是預設呼叫此方法
System.out.println("物件被釋放-->"+this);//直接輸出次對象,呼叫toString()方法
}
}
public class SystemDemo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Person per=new Person("zhangsan",30);
per=null;//斷開引用,釋放空間
//方法1:
System.gc();//強制性釋放空間
//方法2:
// Runtime run=Runtime.getRuntime();
// run.gc();
}
}