In Java, final keyword is used in several different place to define an entity can not later be changed.
final class: can not be extended.
final method: can not be overridden or hidden by subclasses.
final variables: can only be initialized once, either via an initializer or an assignment statement. Before initialized, it is called a blank final variable. A blank final variable forces the constructors to initialize it.