Наследование, полиморфные методы - 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");
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д