Обычный и, по сути, единственный способ сделать это - использовать ключевое слово super
:
protected void method()
{
super.method();
non vital statement;
}
Я говорю «по существу только», потому что есть другие способы сделать это, но они требуют большего изменения. Один из методов - сделать центральный метод финальным и общедоступным (чтобы его можно было вызывать, но не переопределять), и вызывать защищенный абстрактный метод (который можно переопределять, но не вызывать). Затем люди могут настроить поведение подкласса, переопределив только абстрактный метод. Это называется шаблоном метода шаблона.
Третий способ достичь желаемого - использовать аспекты . Используя аспектно-ориентированное программирование, ваши «жизненные операторы» могут быть добавлены к методам подкласса во время выполнения или компиляции время, используя некоторую закулисную магию байт-кода. Это требует некоторого специального инструментария и добавляет некоторую сложность вашей системе сборки, но имеет то преимущество, что она полностью невидима для авторов подклассов.