Запрет переопределения метода в Java
Метод родителя можно пометить final, чтобы потомки
не подменяли его реализацию. Так закрепляют поведение,
которое должно оставаться одинаковым во всей иерархии.
Финальный метод в Post и попытка переопределения
в Article:
class Post {
public final String getId() {
return "post-1";
}
public void setTitle(String title) {
// ...
}
}
class Article extends Post {
// public String getId() { } // error: cannot override
}
Методы без final по-прежнему можно переопределять.
Явная пометка final делает намерение видимым
в объявлении:
class Post {
public void setTitle(String title) {
// ...
}
public final int getVersion() {
return 1;
}
}
В классе User сделайте метод
getVersion финальным.
Попробуйте переопределить getVersion
в классе Employee и убедитесь,
что код не компилируется.