编写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
类之类的不可变类时,这特别有用。