一. final、finalize和finally的区别
1. final
final是一个关键字。表示最终的,不可变的。
final修饰的变量无法重新赋值。
final int i = 100;
//i = 200; 不能变
final修饰的类无法继承
final class A {
//常量
public static final double MATH_PI = 3.1415926;
}
Final 修饰的方法无法覆盖
class B {
public final void doSome(){
}
}
2. finalize
finalize()方法JVM的GC垃圾回收器负责调用
当一个java对象即将被垃圾回收器回收的时候,垃圾回收器负责调用finalize()方法。如果希望在对象销毁时机执行一段代码的话,这段代码要写到finalize()方法中(留遗嘱)
- finalize()是Object类中的一个方法。作为方法名出现
- 所以finalize是一个标识符。
Object obj;
3. finally
finally是一个关键字,和try联合使用,使用在异常处理机制中。
- 在finally语句块中的代码是一定会执行的。
try {
}catch{
System.out.println("finally...")
}
二. 异常与方法覆盖
在方法覆盖时,重写之后的方法不能比重写之前的方法抛出更多(更宽泛)的异常,可以更少(更小)的异常
class Animal{
public void doSome(){
}
public void doOther() throws Exception{
}
}
class Cat extends Animal{
//编译错误
/*public void doSome throws Exception() {
}*/
//编译正常
/* public void doOther(){
}*/
//编译正常
/* public void doOther() throws Exception {
}*/
//编译正常
public void doOther() throws NullPointerException{
}
}






