📜  final finally finalize (1)

📅  最后修改于: 2023-12-03 15:00:45.422000             🧑  作者: Mango

final, finally, finalize

在Java中,finalfinally是关键字, 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();
    }
}

以上是关于finalfinallyfinalize的介绍,希望能帮助你更好地理解它们的用法。