编写final类和方法

您可以将某些或所有类的方法声明为 final。您在方法声明中使用final关键字表示该方法不能被子类覆盖。 Object类执行此操作-其许多方法是final

如果方法的实现不应该更改并且对于对象的一致状态至关重要,则可能希望将其定型。例如,您可能想使ChessAlgorithm类中的getFirstPlayer方法成为 final:

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

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

注意,您也可以声明整个类的 final。声明为 final 的类不能被子类化。例如,在创建诸如String类之类的不可变类时,这特别有用。