This article is currently in the process of being translated into Thai (~99% done).
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