Sobes.tech
Junior — Middle

Тавзеҳ диҳед дар бораи консепсияи усулҳои виртуалӣ дар забони C# ва нақши онҳо дар иҷрои полиморфизм.

sobes.tech AI

Ҷавоб аз AI

ใน C# เมธอดเสมือน (virtual methods) คือเมธอดที่ประกาศด้วยคำสำคัญ virtual ซึ่งสามารถถูกเขียนทับ (override) ในคลาสที่สืบทอดมาได้ นี่เป็นฐานสำหรับการดำเนินการ polymorphism — ความสามารถในการเรียกใช้เมธอดของคลาสที่สืบทอดผ่านการอ้างอิงไปยังคลาสพื้นฐาน

เมื่อเมธอดถูกประกาศเป็น virtual การเรียกใช้เมธอดจะถูกกำหนดในช่วงเวลารันไทม์ (การเชื่อมโยงแบบไดนามิก) ไม่ใช่ในช่วงเวลาคอมไพล์ ซึ่งช่วยให้วัตถุสามารถแสดงพฤติกรรมที่แตกต่างกันขึ้นอยู่กับประเภทที่แท้จริงของมัน

ตัวอย่าง:

class Animal {
    public virtual void Speak() {
        Console.WriteLine("สัตว์ส่งเสียง");
    }
}

class Dog : Animal {
    public override void Speak() {
        Console.WriteLine("เห่าเห่า");
    }
}

Animal a = new Dog();
a.Speak(); // จะแสดง "เห่าเห่า"

ในที่นี้ ถึงแม้ว่าตัวแปร a จะมีชนิดเป็น Animal แต่เมธอด Speak() ที่ถูกเขียนทับในคลาส Dog จะถูกเรียกใช้ เนื่องจากเป็นเมธอดเสมือน