Итак
У меня есть такой базовый класс:
public abstract class Car
{
protected static bool _on { get; set; }
public abstract void Drive();
}
и такой производный класс:
public class Renault: Car
{
public override void Drive()
{
if (!_on)
{
Console.WriteLine("Drive renault");
}
else
{
Console.WriteLine("Have to start renault first");
}
}
и другой производный класс:
public class Porsche :Car
{
public override void Drive()
{
if (_on)
{
Console.WriteLine("Drive Porsche");
}
else
{
Console.WriteLine("Have to start Porsche first");
}
}
}
Но вы видите, что реализация метода почти такая же, только имя отличается.
Итак, я создал этот вспомогательный класс:
public class HelperClass
{
protected bool _on;
public void Drive(string name)
{
if (_on)
{
Console.WriteLine($"Drive {name}");
}
else
{
Console.WriteLine($"Have to start {name} first");
}
}
}
Но как теперь использовать HelperClass? так что вы можете просто сказать, в де производном (например, Porsche) классе _on = true, и затем вы получите сообщение: Drive Porsche
и, если _on = false, вы увидите сообщение: Сначала запустите Porsche.
Спасибо
oke,
Я добавил это:
public class Person
{
private Car _car;
public Person(Car car)
{
this._car = car;
}
public void Drive()
{
this._car.Drive();
}
}
static void Main(string[] args)
{
Ford ford = new Ford();
Person person = new Person(ford);
person.Drive();
Console.ReadKey();
}
Но как это сделать, например, Porsche имеет сообщение: сначала нужно запустить Porsche, и, например, Ford, должен получить сообщение: Drive Ford. Потому что теперь
protected bool _on { get; set; }
находится в базовом классе