[Java] final,finally,finalize的区别

final,finally,finalize的区别?

1.final关键字

1.1final修饰变量

如果final修饰变量上,final不能修改。

 

 

 

 

 

1.2 final可以修饰在属性上

 

如果final在属性上,直接给初始值,或在构造器中给初始值,如果存在多个构造器,则每一个构造器里面都要有final这个属性的初始化。

 

 

 

 

1.3 final修饰在方法上

final修饰在方法上不能被覆写。可以被正常调用。

 

 

1.4 final修饰在类上

如果一个类被final修饰,就不能被继承

 

 

源代码:TestFinal.java

final class Teacher{ //如果这个类被final修饰,则不能被继承,即本例第21行代码会报错
String name;

/*
final int age;//属性上用final,则直接赋初识值,或每个构造器中都要给final属性初识化

public Teacher(){ //子类构造器要调用默认构造器
this.age = 10;
}

public Teacher(String name){
this.name = name;
this.age = 10;
}
*/
public final void teach(){
System.out.println(name + "在教课");
}
}


class JavaTeacher extends Teacher{

boolean isGlass;
/*
//调用默认构造器,可隐藏
public JavaTeacher(){
super();
}
*/

/*
//会报错,final用在方法上,不能被覆写
public void teach(){
System.out.println(name + "在教课");
}
*/
}

public class TestFinal{

public static void main(String[] args){


}

}

 

 

2. finally:

 finally用于异常处理,无论是否发生异常,finally后面的语句都一定执行。

 

 

3. finalize:

finalize是在Object类中定义的方法,因此,所有的类都继承了它。子类可以覆盖finalize()方法,来整理系统资源或者执行其他清理工作。

用于垃圾回收,我们不用手动的去调用,由jvm来调用。

当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。

什么样的对象会被回收?:匿名对象,或无主对象,没有引用即被回收。

 

posted @ 2020-03-12 11:43  寄生的鱼  阅读(169)  评论(0编辑  收藏  举报