Да.Сделайте methodA
абстрактный и сделайте GeneralClass
абстрактный класс.Если вы хотите запретить переопределение methodB
и methodC
, пометьте их как final
.
Редактировать
Если, с другой стороны, вы хотите обеспечить реализацию по умолчанию дляmethodA
и также требуют подклассов для его переопределения, вы существенно нарушаете принцип подстановки Лискова .Вы должны пересмотреть, почему вам нужен этот дизайн, потому что он пахнет довольно плохо.Например, было бы абсолютно ничто , препятствующее вашему подклассу просто переопределить ваш метод следующим образом:
@Override
public void methodA() {
super.methodA();
}
И если повторная реализация может просто вызвать реализацию класса по умолчанию суперкласса,какой смысл заставлять его переопределять в первую очередь?
По этой причине (помимо прочего) невозможно обеспечить реализацию по умолчанию и требуют подклассов для ее переопределения.Переосмыслите свой дизайн.