From http://www.cnblogs.com/ggjucheng/archive/2012/11/26/2789749.html
You can declare some methods of the class as final. Use the final keyword to declare the method, indicating that this method cannot be overwritten by the quilt class.
The object class does this. Some of its methods are final.
If the method of a class is the key to object state consistency, so its implementation cannot be changed, you may want to create a method of final. for example, you want to put getfirstplayer in the chessalgorithm class as final:
ClassChessalgorithm {EnumChessPlayer {White, Black }...FinalChessPlayer getfirstplayer (){ReturnChessPlayer. White ;}...}
The method called by the constructor should be declared as final. If a constructor calls a non-final method, a subclass may redefine this method, resulting in some surprising results.
Note that you can also declare the entire class as final. If a class is declared in this way, it cannot be inherited. Sometimes this feature is very useful, for example, create a constant string class.