BasicKnowledgeCSharp/LessonsAndTasks/Lesson 75 - ПОЛИМОРФИЗМ, виртуальные методы, virtual override/Program.cs
Dvurechensky bf6a7c2b4e 1.1
2025-05-12 02:48:54 +03:00

68 lines
1.6 KiB
C#

/*
* 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
*/
/// <summary>
/// virtual и override - дают возможность переопределить работу методов в классе наследнике
/// </summary>
class Motor
{
/// <summary>
/// Чтобы метод был доступен на уровно наследника вместо private ставим protected
/// </summary>
protected virtual void StartEngine()
=> Console.WriteLine("Двигатель запущен!");
/// <summary>
/// Чтобы переопределить метод для новой реализации в наследнике
/// </summary>
public virtual void Drive()
{
StartEngine();
Console.WriteLine("Я еду!");
}
}
class SportMotor : Motor
{
protected override void StartEngine() => Console.WriteLine("Рон дон дон");
/// <summary>
/// Переопределение виртуального метода
/// </summary>
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();
}
}