KO CSharp Inheritance Interfaces - LIHACHTETAN/ClassicUO-Bad-Newbie-CSharp-Scripts-IDE GitHub Wiki

ะฃะบั€ะฐั—ะฝััŒะบะฐ ยท ะ ัƒััะบะธะน ยท 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#๋Š” ์ ์ ˆํ•œ ์ผ๋ฐ˜ ๊ณ„์•ฝ์—์„œ ๊ธฐ๋ณธ ๊ตฌํ˜„๊ณผ ์ธํ„ฐํŽ˜์ด์Šค์˜ ์ •์  ์ถ”์ƒ ๋ฉค๋ฒ„๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

๊ณต์‹ ๋ฌธ์„œ: ์ƒ์†, ์ธํ„ฐํŽ˜์ด์Šค ๋ฐ ๋‹คํ˜•์„ฑ - Microsoft Learn.