手机
当前位置:查字典教程网 >编程开发 >Java >浅析final,finally,finalize 的区别
浅析final,finally,finalize 的区别
摘要:1.finalfinal修饰类,说明这个类不能被继承,是以个顶级类。final修饰变量,说明这个变量是常量。final修饰方法,表示这个方法...

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

}

}

【浅析final,finally,finalize 的区别】相关文章:

java中final与finally的使用介绍

深入解析StringBuffer和StringBuilder的区别

try catch finally的执行顺序深入分析

Java中关于int和Integer的区别详解

基于Java多线程notify与notifyall的区别分析

浅析java中print和println的区别

浅析java中ArrayList与Vector的区别以及HashMap与Hashtable的区别

浅谈Java变量的初始化顺序详解

Java修饰符 abstract,static,final 的区别详解

解析java中super的用法分析

精品推荐
分类导航