编写final
类和方法
原文: 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
类这样的不可变类时。