/* * Author: Nikolay Dvurechensky * Site: https://www.dvurechensky.pro/ * Gmail: dvurechenskysoft@gmail.com * Last Updated: 12 мая 2025 02:47:11 * Version: 1.0.3 */ using System; /* * Полиморфизм * * виртуальные методы * * virtual * * override */ /// /// virtual и override - дают возможность переопределить работу методов в классе наследнике /// class Motor { /// /// Чтобы метод был доступен на уровно наследника вместо private ставим protected /// protected virtual void StartEngine() => Console.WriteLine("Двигатель запущен!"); /// /// Чтобы переопределить метод для новой реализации в наследнике /// public virtual void Drive() { StartEngine(); Console.WriteLine("Я еду!"); } } class SportMotor : Motor { protected override void StartEngine() => Console.WriteLine("Рон дон дон"); /// /// Переопределение виртуального метода /// public override void Drive() { StartEngine(); Console.WriteLine("Я быстро еду!"); } } class Stable { public void Drive(Motor motor) => motor.Drive(); } class Program { static void Main() { var stable = new Stable(); stable.Drive(new SportMotor()); Console.ReadKey(); } }