Inheritance in Interfaces

เสฏฐพงศ์ มณีศาสตร์ 650710591

การสืบทอดอินเทอร์เฟซใน C#

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

ใน C# สามารถสืบทอดอินเทอร์เฟซได้โดยใช้เครื่องหมาย colon ( : ) ต่อท้ายหลังชื่ออินเทอร์เฟซที่จะทำการสร้าง แล้ว ตามด้วยชื่อของอินเทอร์เฟซที่ต้องการจะสืบทอด

Syntax:

// กำหนดอินเทอร์เฟซ
public interface interface1 
{
    void mymethod1();
    void mymethod2();
}

// การสืบทอดอินเทอร์เฟซ
public interface interface2 : interface1
{
    void mymethod3();
}

ตัวอย่างการสืบทอดอินเทอร์เฟซ:

public interface IAnimal
{
    void Eat();
}

public interface ICanine : IAnimal
{
    void Bark();
}

// คลาสที่implementอินเทอร์เฟซ ICanine จะต้องimplement ทั้ง Eat และ Bark
public class Dog : ICanine
{
    public void Eat()
    {
        Console.WriteLine("The dog is eating.");
    }

    public void Bark()
    {
        Console.WriteLine("The dog is barking.");
    }
}

การสืบทอดหลายอินเทอร์เฟซ

ใน C# สามารถสืบทอดได้หลายอินเทอร์เฟซพร้อมกันโดยใช้เครื่องหมายคอมมา (,)

ประโยชน์ของการใช้การสืบทอดอินเทอร์เฟซ

  • ด้านการจัดระเบียบโค้ด: การสืบทอดอินเทอร์เฟซช่วยให้สามารถรวมพฤติกรรมของอินเทอร์เฟซหลาย ๆ ตัวไว้ในคลาสเดียวกันได้ โดยที่โค้ดจะถูกจัดระเบียบและทำความเข้าใจได้ง่ายขึ้น

  • ด้านการลดความซ้ำซ้อนของโค้ด: เมื่อมีหลายอินเทอร์เฟซที่มีเมธอดคล้ายกัน การใช้การสืบทอดจะช่วยลดการเขียนโค้ดซ้ำซ้อน เพราะสามารถสร้างอินเทอร์เฟซพื้นฐานแล้วค่อยสืบทอดจากอินเทอร์เฟซนั้นมา implement ต่อได้

  • เพิ่มความยืดหยุ่น: การสืบทอดในอินเทอร์เฟซช่วยให้ผู้พัฒนาสามารถปรับเปลี่ยนหรือขยายฟังก์ชันการทำงานของอินเทอร์เฟซได้โดยไม่ต้องเปลี่ยนแปลงโค้ดหลักมากเกินไป สามารถเพิ่มอินเทอร์เฟซใหม่ที่สืบทอดจากอินเทอร์เฟซเดิมได้โดยไม่ยุ่งยาก

เปรียบเทียบภาษา C# กับ C++,Java,Python

การสืบทอดอินเทอร์เฟซของ C++

  • ไม่ได้มีคอนเซ็ปต์ของอินเทอร์เฟซโดยตรง แต่เราสามารถสร้างโครงสร้างที่คล้ายกันได้โดยใช้ Abstract Class

  • รองรับการสืบทอดหลายอินเทอร์เฟซ

การสืบทอดอินเทอร์เฟซของ java

  • คล้ายกับภาษา C# รองรับการสืบทอดหลายอินเทอร์เฟซ

การสืบทอดอินเทอร์เฟซของ Python

  • ใน Python ไม่มีการสืบทอดอินเทอร์เฟซโดยตรงเหมือนในภาษาอื่น เช่น Java หรือ C# แต่เราสามารถใช้แนวคิดที่คล้ายกันผ่านการใช้ abstract base classes (ABCs) และ สามารถ multiple inheritance ได้

ตัวอย่าง

Video:

Slide:

Reference:

  • inheritance in C#

  • C# Inheritance in interfaces

  • Interfaces in C++:

  • inheritance in C++

  • inheritance in Java

  • inheritance in Python

  • interfaces in Python:

Last updated