Мне нужно создать много очень похожих классов, у которых есть только один метод. Поэтому я решил, что создание абстрактного класса было бы хорошим способом достичь этого. Но метод, который я хочу переопределить (скажем, метод foo()), не имеет поведения по умолчанию. Я не хочу сохранять реализацию по умолчанию, заставляя все расширяющиеся классы реализовать этот метод. Как это сделать?
Как заставить метод быть переопределенным в java?
Ответ 1
В базовом классе вам нужен абстрактный метод:
public abstract class BaseClass {
public abstract void foo();
}
Таким образом, вы не указываете поведение по умолчанию и, вы вынуждаете не-абстрактные классы наследовать от BaseClass
, чтобы указать реализацию для foo
.
Ответ 2
Просто определите foo() как абстрактный метод в базовом классе:
public abstract class Bar {
abstract void foo();
}
Подробнее см. Учебники Java ™ (Интерфейсы и Наследование).
Ответ 3
Просто сделайте метод абстрактным.
Это заставит все подклассы реализовать его, даже если он реализован в суперклассе абстрактного класса.
public abstract void foo();
Ответ 4
Если у вас есть абстрактный класс, тогда сделайте свой метод (пусть также foo
abstract)
public abstract void foo();
Затем все подклассы должны будут переопределить foo
.
Ответ 5
Сделайте этот метод abstract
.