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();
}
}