Изменение сигнатур абстрактных методов в унаследованных классах

Представьте, что у меня есть класс под названием Engine как абстрактный базовый класс. У меня также есть классы ElectrictEngine и FuelEngine, которые являются производными от него.

Я хочу создать метод заправки двигателя. Следует ли мне делать это как абстрактный метод на уровне базового класса и давать ему общее название, например fillUpEnergy?

Проблема в том, что если у меня есть электрический двигатель, количество параметров, которые принимает метод, отличается от количество параметров, которые необходимо передать для топливного двигателя. Итак, сигнатура метода отличается.

Кроме того, есть ли какой-нибудь разумный способ использовать общий метод для обоих механизмов, кроме как заключить его в более конкретное имя? Например: для топливного двигателя - «заправка», для электродвигателя - «chargeBattery». ? И заодно скрыть общий метод от пользователя?

11
задан Esoteric Screen Name 8 July 2013 в 19:15
поделиться