You can declare some or all of a class's methods final. You use thefinal
keyword in a method declaration to indicate that the method cannot be overridden by subclasses. TheObject
class does this—a number of its methods arefinal
.You might wish to make a method final if it has an implementation that should not be changed and it is critical to the consistent state of the object. For example, you might want to make the
getFirstPlayer
method in thisChessAlgorithm
class final:Methods called from constructors should generally be declared final. If a constructor calls a non-final method, a subclass may redefine that method with surprising or undesirable results.class ChessAlgorithm { enum ChessPlayer { WHITE, BLACK } ... final ChessPlayer getFirstPlayer() { return ChessPlayer.WHITE; } ... }Note that you can also declare an entire class final this prevents the class from being subclassed. This is particularly useful, for example, when creating an immutable class like the
String
class.