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