final class in Java

A final class cannot be subclassed. Many of the Java standard library classes are final, such as java.lang.System and java.lang.String. Make a final class only if you need an absolute guarantee that none of the methods in that class will ever be overridden. If you're deeply dependent on the implementations of certain methods, then using final gives you the security that nobody can change the implementation.
you must never, ever, ever mark a class as both final and abstract.
```
final class Super {
   private int data = 30;
}
public class Sub extends Super{
   public static void main(String args[]){
   }
}

//error: cannot inherit from final Super
```