Иногда мы не хотим, чтобы от некоторого созданного нами класса можно было производить классы-потомки. Например, это может понадобиться в целях безопасности.
В этом случае мы объявляем класс с ключевым словом final. Вот пример:
final class someclass
{
//некоторые поля и методы класса
private int somedata;
...
}
Теперь от нашего класса someclass нельзя делать классы-потомки. Т. е тут, например, будет ошибка:
class newclass extends someclass //Ошибка!
{
...
}