TOC

This article is currently in the process of being translated into Thai (~99% done).

Classes:

Inheritance

ลักษณะสำคัญทีสุดของ Object Oriented Programming (OOP) ใน C# คือ inheritance ความสามารถของมันก็คือการสืบทอดคุณลักษณะมาจาก parent class ใน .NET framework ก็ถูกสร้างมาจากแนวคิดนี้ ทุกๆอย่างคือ object ไม่ว่าจะเป็นตัวเลข ก็สืบทอดมาจาก System.Object class แต่ในที่นี้เราไม่ต้องสร้าง instance object จาก integer class เพราะ .NET จะสร้างพวก พื้นฐานนี้ ให้เราแล้ว

ในหัวข้อนี้ค่อนข้างจะเข้าใจยาก แต่เมื่อได้ลองดูตัวอย่าง จะเข้าใจได้มากขึ้น

public class Animal
{
    public void Greet()
    {
        Console.WriteLine("Hello, I'm some sort of animal!");
    }
}

public class Dog : Animal
{

}

ขั้นแรกเราสร้าง class ที่มีชื่ิอ Animal เป็น parent class แล้วเราก็สร้าง class Dog และมี colon (:) ตามด้วย class Animal เพื่อจะบอกว่า class Dog สืบทอดคุณลักษณะมาจาก class Animal ซึ่งเปรียบเทียบได้ว่า สุนัขก็เป็นสัตว์ชนิดนึง

Animal animal = new Animal();
animal.Greet();
Dog dog = new Dog();
dog.Greet();

ถ้าเรา run โค้ดตัวอย่าง เราจะสังเกตได้ว่า ถึงแม้ว่าเราจะไม่ได้โค้ด method Greet() ใน Dog class แต่เราก็ใช้ method นี้ได้ เพราะ class Dog ได้สืบทอดคุณลักษณะมาจาก class Animal

public class Animal
{
    public virtual void Greet()
    {
        Console.WriteLine("Hello, I'm some sort of animal!");
    }
}

public class Dog : Animal
{
    public override void Greet()
    {
        Console.WriteLine("Hello, I'm a dog!");
    }
}

ในตัวอย่างนี้ เราได้เพิ่ม virtual ใน Animal class และ override ใน Dog class ที่ method เพราะว่า

ใน C# ถ้าเราจะ override method เราต้องใส่ virtual ที่ parent class และถ้าเราต้องการจะใช้ method ต้นฉบับ เราจะใช้ keyword base

public override void Greet()
{
    base.Greet();
    Console.WriteLine("Yes I am - a dog!");
}

และไม่ใช่แค่ method เท่านั้นที่สามาถสืบทอดคุณลักษณะได้ field และ property ก็สืบทอดได้เหมือนกัน แต่เราจะต้องคำนึงถึง visibility ด้วย

และก็ไม่ใช่แค่ class ต่อ class เท่านั้น เรายังทำเป็น hierarchy จัดระบบตามลำดับชั้นได้ด้วย เช่น Puppy class สืบทอดคุณลักษณะจาก Dog class และ Dog class สืบทอดคุณลักษณะจาก Animal class สิ่งที่ไม่สามารถทำได้ใน C# ก็คือ ใน 1 class ไม่สามารถสืบทอดคุณลักษณะได้จากหลายๆ class


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!