Skip to content

RU CSharp Inheritance Interfaces

Bad Newbie edited this page Oct 16, 2026 · 3 revisions

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Наследование, интерфейсы и полиморфизм

Руководство C# · Примеры UO

Класс имеет один базовый класс и может реализовывать несколько интерфейсов. virtual разрешает переопределение, override реализует его, abstract требует реализации наследником, sealed ограничивает наследование. base обращается к базовой реализации; new скрывает член и не заменяет override.

Простой пример (Example.cs)

Сохраните этот пример отдельно как Example.cs. Запускайте его независимо от остальных примеров страницы.

Example.cs:

// PROJECT-EXAMPLE
ILabel item = new Item();
System.Console.WriteLine(item.Label);
interface ILabel { string Label { get; } }
class Item : ILabel { public string Label => "Ore"; }

Результат:

Ore
interface IDescription
{
    string Describe();
}

abstract class Job : IDescription
{
    public abstract string Describe();
}

sealed class GatherJob : Job
{
    public override string Describe() => "Gathering job";
}

IDescription job = new GatherJob();
UO.Print(job.Describe());
class NamedJob
{
    public string Name { get; }
    public NamedJob(string name) => Name = name;
    public virtual string Report() => Name;
}

sealed class TimedJob : NamedJob
{
    public TimedJob(string name) : base(name) { }
    public override string Report() => base.Report() + " — timed";
}

UO.Print(new TimedJob("Search").Report());

Интерфейсы описывают контракт, а не готовую игровую операцию. Явная реализация интерфейса позволяет разделить одноимённые члены. Современный C# поддерживает default-реализации и статические абстрактные члены интерфейсов в подходящих generic-контрактах.

Официальная документация: Наследование, интерфейсы и полиморфизм — Microsoft Learn.

Clone this wiki locally