Привет, ребята :) Я изучаю C # и хотел бы получить некоторую помощь по поводу унаследованного члена / поля. У меня есть класс под названием Car, предположим, только с одним двигателем. Однако в последнее время я хочу сделать гоночную машину с 2 и более двигателями. Поле «my_Engine», унаследованное от родительского класса, кажется не соответствующим, и я оставляю его пустым.
Проблема 1 Replace_Engine (Engine new_Engine) больше не используется в Race_Car
Задача 2 Replace_Engine (цель Engine, Engine new_Engine) можно использовать только после явного приведения к Race_Car.
У меня довольно много подклассов автомобилей. Как я могу решить это? Нужно ли переписывать их все?
Должен ли я переписать их все, достаточно ли подходит замена my_Engine на массив? Но не все автомобили имеют более одного двигателя ... использование массива кажется странным. Я совершенно запутался здесь.
Ценю всю вашу помощь:)
public class Car
{
//can store only one engine
protected Engine my_Engine;
//Changed to virtual to let Race_Car to override
public virtual float Get_Horse_Power()
{
return my_Engine.max_Power;
}
//Changed to virtual to let Race_Car to override
public virtual void Replace_Engine(Engine new_Engine)
{
my_Engine = new_Engine;
}
}
public class Race_Car : Car
{
protected Engine[] my_Engines;
public override float Get_Horse_Power()
{
float result=0;
for(int i = 0; i <my_Engines.Length;i++)
{
result+=my_Engines.max_Power;
}
return result;
}
//Don't know which engine need to be replaced
public override void Replace_Engine(Engine new_Engine)
{
throw new System.NotImplementedException();
}
//Created a overloading method but need an explicit cast to call
public void Replace_Engine(Engine target, Engine new_Engine)
{
for(int i = 0; i <my_Engines.Length;i++)
{
if(my_Engines[i]==target)
{
my_Engines[i]= new_Engine;
return;
}
}
}
}