BasicKnowledgeCSharp/LessonsAndTasks/Lesson 75 - ПОЛИМОРФИЗМ, виртуальные методы, virtual override/Program.cs
Dvurechensky 058c8f2679 1.0
Main
2024-10-05 09:59:53 +03:00

60 lines
1.4 KiB
C#

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();
}
}