Наследование, полиморфные методы - C#
Формулировка задачи:
№1
Составить программу с одним родительским классом и двумя потомками. Потомки должны содержать виртуальные функции. Создать виртуальную функцию выдачи результатов расчета методов на экран монитора с указанием названий и полей и их значений соответствующего объекта. При этом создать объекты базового и производных типов, используя полиморфный контейнер - массив ссылок базового класса на объекты базового и производных классов (кол-во объектов >=5);
Родительский класс: Автомобили (поле название)
Потомки: Грузовой (поле - грузоподъемность р в тоннах)
Легковой (поле - объем двигателя V в см кубических)
Полиморфные методы: расход горючего на 100 км:
Грузовой автомобиль М=(Sqrt(p))* 100
Легковой M= 2,5*V
№2
Составить программу с абстрактным родительским классом и двумя объектами - потомками, модифицировать первую задачу..
Ребята, помогите пожалуйста, я честно признаюсь что не понимаю как делать подобные вещи (задачи более легкие - расчеты подсчеты даются легко) но тут, просто не могу понять, хочу разобраться, учителя к сожалению на встречу не идут, просто не объясняют - либо ты шаришь, либо отчисляйся.. Спасите хоть чем нибудь
Решение задачи: «Наследование, полиморфные методы»
textual
Листинг программы
class Program
{
static void Main(string[] args)
{
Car[] cars = {
new PassengerCar("Toyota", 250),
new PassengerCar("Mersedes", 200),
new Truck("Mersedes Truck", 1500),
new Truck("Mazda Truck", 20000),
new Truck("MAN Truck", 30000),
};
foreach (Car car in cars)
{ car.Print(); } // полиморфный вызов
}
}
abstract class Car
{
public string Name { get; }
public Car(string name)
{ Name = name; }
public virtual void Print()
{ Console.WriteLine($"Name: {Name}"); }
public abstract double FuelConsumption();
}
// Грузовик
class Truck : Car
{
public double Carrying { get; }
public Truck(string name, double carrying) : base(name)
{ Carrying = carrying; }
public override double FuelConsumption()
{ return Math.Sqrt(Carrying) * 100; }
public override void Print()
{
base.Print();
Console.WriteLine($"Carrying: {Carrying:F} T");
Console.WriteLine($"Fuel consumption: {FuelConsumption():F} l/100km\n");
}
}
// Легковушка
class PassengerCar : Car
{
public double EngineVolume { get; }
public PassengerCar(string name, double engineVolume) : base(name)
{ EngineVolume = engineVolume; }
public override double FuelConsumption()
{ return 2.5 * EngineVolume; }
public override void Print()
{
base.Print();
Console.WriteLine($"Engine volume: {EngineVolume:F} cm^3");
Console.WriteLine($"Fuel consumption: {FuelConsumption():F} l/100km\n");
}
}