本教程是针对 JDK 8 编写的。本页面中描述的示例和实践不利用后续版本中引入的改进,并可能使用不再可用的技术。
请参阅 Java 语言更改,了解 Java SE 9 及后续版本中更新的语言功能摘要。
请参阅 JDK 发行说明,了解所有 JDK 版本的新功能、增强功能以及已删除或弃用选项的信息。
你可以声明某个类的一些或全部方法为 final。在方法声明中使用 final
关键字表示该方法不能被子类重写。 Object
类就是这样做的,它的许多方法都是 final
。
如果一个方法有一个不应该改变的实现,并且对对象的一致状态至关重要,那么你可能希望将该方法声明为 final。例如,在这个 ChessAlgorithm
类中,你可能想要将 getFirstPlayer
方法声明为 final:
class ChessAlgorithm { enum ChessPlayer { WHITE, BLACK } ... final ChessPlayer getFirstPlayer() { return ChessPlayer.WHITE; } ... }
从构造函数调用的方法通常应该声明为 final。如果构造函数调用了一个非 final 的方法,子类可能重新定义该方法,导致意外或不希望的结果。
注意,你也可以将整个类声明为 final。声明为 final 的类不能被继承。这在创建像 String
类这样的不可变类时特别有用。