编写final类和方法

原文: https://docs.oracle.com/javase/tutorial/java/IandI/final.html

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

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

  1. class ChessAlgorithm {
  2. enum ChessPlayer { WHITE, BLACK }
  3. ...
  4. final ChessPlayer getFirstPlayer() {
  5. return ChessPlayer.WHITE;
  6. }
  7. ...
  8. }

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

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