# 编写`final`类和方法

> 原文： [https://docs.oracle.com/javase/tutorial/java/IandI/final.html](https://docs.oracle.com/javase/tutorial/java/IandI/final.html)

你可以声明一些或所有类的方法 _final_ 。您在方法声明中使用`final`关键字来指示子类不能覆盖该方法。 `Object`类可以做到这一点 - 它的许多方法都是`final`。

如果方法具有不应更改的实现，并且对于对象的一致状态至关重要，那么您可能希望将方法设为 final。例如，您可能希望在`ChessAlgorithm`类中最终生成`getFirstPlayer`方法：

```
class ChessAlgorithm {
    enum ChessPlayer { WHITE, BLACK }
    ...
    final ChessPlayer getFirstPlayer() {
        return ChessPlayer.WHITE;
    }
    ...
}

```

从构造函数调用的方法通常应该声明为 final。如果构造函数调用非 final 方法，则子类可能会以令人惊讶或不良结果重新定义该方法。

请注意，您还可以声明整个类 final。声明为 final 的类不能被子类化。这特别有用，例如，在创建像`String`类这样的不可变类时。