#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 которое характеризует числовой показатель расхода энергии
Комментариев нет:
Отправить комментарий