Ensure that the class can’t be extended. This prevents careless or malicious subclasses from compromising the immutable behavior of the class by behaving as if the object’s state has changed. Preventing subclassing is generally accomplished by making the class final, but there is an alternative that we’ll discuss later.
Even with the caveat, I wish this recommendation wasn't so high in the list.
Library classes (where `final` is most appropriate to consider) are too often just shy of being valuable to use, and extending them is often a good option for getting the behavior you want. If a developer is in a position to consider extending your class, let them, at their own risk. (More on this in a following note.)