CSharp Inheritance Interfaces - LIHACHTETAN/ClassicUO-Bad-Newbie-CSharp-Scripts-IDE GitHub Wiki
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
Спадкування, інтерфейси та поліморфізм
Клас має один базовий клас і може продавати кілька інтерфейсів. "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.