淺析final,finally,finalize 的差別。本站提示廣大學習愛好者:(淺析final,finally,finalize 的差別)文章只能為提供參考,不一定能成為您想要的結果。以下是淺析final,finally,finalize 的差別正文
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();
}
}