📅  最后修改于: 2023-12-03 15:00:45.422000             🧑  作者: Mango
final
, finally
, finalize
在Java中,final
和finally
是关键字, finalize
是Object类的方法。它们的区别和用法有所不同。
final
final
关键字可以用于类、方法和变量上。
final
,则该类不能被继承。final
,则该方法不能被子类重写。final
,则该变量的值不能被修改。示例:
public final class FinalClass {
// ...
}
public class ParentClass {
public final void finalMethod() {
// ...
}
}
public class ChildClass extends ParentClass {
// 报错,finalMethod()不能被重写
// public void finalMethod() {
// // ...
// }
}
public class FinalVariable {
public static final int MAX_VALUE = 100; // 常量
public final int counter = 0; // 实例变量,仅能赋值一次
public int number; // 实例变量,可赋值多次
}
finally
finally
关键字通常用于try-catch块中,无论是否发生异常,finally
代码块中的语句都会被执行。它主要用于清理代码和关闭资源。
示例:
FileOutputStream fos = null;
try {
fos = new FileOutputStream("file.txt");
// 业务逻辑
} catch (FileNotFoundException e) {
// 异常处理
} finally {
if (fos != null) {
try {
fos.close(); // 关闭资源
} catch (IOException e) {
// 异常处理
}
}
}
finalize
finalize
方法是Object类的一个方法,每个对象都拥有该方法。该方法在垃圾回收器将该对象回收之前被调用,用于释放资源和清理对象状态。一般来说,不建议在程序中重写该方法。
示例:
public class FinalizeTest {
@Override
protected void finalize() throws Throwable {
// 释放资源和清理对象状态
super.finalize();
}
}
以上是关于final
,finally
和finalize
的介绍,希望能帮助你更好地理解它们的用法。