#c_sharp #ооп
У меня есть класс машина и класс электромашина. Дело в том, что класс электромашина
наследует от класса машина поле Fuel и мне ее нужно удалить или переименовать просто
потому-что у электромашины нет топлива а есть заряд.
class Car
{
public int MaxSpeed = 180;
public int Range = 100;
public int CurrentSpeed = 100;
public int Fuel = 100;
public void Drive()
{
if (Fuel <= 0)
throw new Exception("Not enough fuel");
else
{
this.Fuel--;
Range -= Range / CurrentSpeed;
}
}
}
class ElectroCar : Car
{
int Charge;
public ElectroCar()
{
Charge = base.Fuel;
}
}
Ответы
Ответ 1
Никак. Если у класса-предка есть поля, не имеющие смысла в классе-потомке, то вы неправильно выстроили иерархию наследования. Есть разные пути исправить ситуацию. Например: выделите общее у Car и ElectroCar в базовый класс Vehicle, Car переименуйте в FuelCar, и свойства, относящиеся к топливу, пускай содержит только FuelCar.Ответ 2
Я предлагаю добавить перечисление Source enum Sources { Gas, Diesel, Petrol, Kerosene, Electricity } Поле fuel заменить на powerSource типа Sources и добавить поле числовое powerIndex которое характеризует числовой показатель расхода энергии
Комментариев нет:
Отправить комментарий