4.2 การสร้างคลาสย่อย (Subclass) และคลาสหลัก (Superclass)
4.2 การสร้างคลาสย่อย (Subclass) และคลาสหลัก (Superclass)
คลาสหลัก (Superclass): เป็นคลาสที่กำหนดคุณสมบัติและพฤติกรรมทั่วไปที่คลาสอื่น ๆ จะนำไปใช้ ตัวอย่างเช่น คลาส "Animal" ซึ่งมีคุณสมบัติทั่วไป เช่น name, age, และเมธอด move(), eat()
คลาสย่อย (Subclass): เป็นคลาสที่สืบทอดคุณสมบัติจากคลาสหลักและสามารถเพิ่มคุณสมบัติใหม่หรือลักษณะพิเศษของตัวเอง ตัวอย่างเช่น คลาส "Dog" และ "Cat" ที่สืบทอดจากคลาส "Animal" และสามารถเพิ่มเมธอดเฉพาะ เช่น bark() สำหรับ "Dog" หรือ meow() สำหรับ "Cat"
คลาสหลัก (Superclass หรือ Parent Class): คลาสที่เป็นพื้นฐาน ซึ่งสามารถให้คุณสมบัติ (ตัวแปร) และพฤติกรรม (เมธอด) แก่คลาสที่สืบทอดไป
คลาสย่อย (Subclass หรือ Child Class): คลาสที่สืบทอดคุณสมบัติและพฤติกรรมจากคลาสหลัก โดยสามารถเพิ่มคุณสมบัติหรือพฤติกรรมใหม่หรือปรับเปลี่ยนพฤติกรรมของคลาสหลักได้ (โดยการ Overriding)
สร้างคลาสหลัก (Superclass): กำหนดตัวแปรและเมธอดที่คลาสย่อยจะสืบทอด
สร้างคลาสย่อย (Subclass): ใช้คำสั่ง extends (ใน Java) หรือระบุคลาสหลักโดยตรง (ใน Python) เพื่อสืบทอดคุณสมบัติจากคลาสหลัก และสามารถเพิ่มหรือปรับเปลี่ยนพฤติกรรมได้ตามต้องการ
การใช้ซ้ำ (Reusability): คลาสย่อยสามารถนำคุณสมบัติจากคลาสหลักมาใช้ใหม่ได้ โดยไม่ต้องเขียนโค้ดซ้ำ
การขยายโปรแกรม (Extendability): สามารถเพิ่มคุณสมบัติหรือปรับเปลี่ยนพฤติกรรมของคลาสย่อยได้ตามต้องการ
การจัดการโครงสร้างโปรแกรม: การสร้างคลาสหลักและคลาสย่อยช่วยให้โปรแกรมมีโครงสร้างที่ชัดเจนและมีระเบียบ
การเขียนทับ (Overriding): คลาสย่อยสามารถเขียนทับเมธอดของคลาสหลักเพื่อให้พฤติกรรมที่สืบทอดมานั้นเหมาะสมกับคลาสย่อย
ตัวอย่างการสร้างคลาสย่อยและคลาสหลักใน Python:
# คลาสหลัก (Superclass)
class Animal:
def __init__(self, name, age):
self.name = name
self.age = age
def move(self):
print(f"{self.name} is moving.")
def eat(self):
print(f"{self.name} is eating.")
# คลาสย่อย (Subclass)
class Dog(Animal):
def bark(self):
print("Woof!")
class Cat(Animal):
def meow(self):
print("Meow!")
# การใช้งานคลาสย่อย
dog = Dog("Buddy", 3)
dog.move() # จากคลาสหลัก (Superclass)
dog.bark() # เมธอดของคลาสย่อย (Subclass)
cat = Cat("Whiskers", 2)
cat.move() # จากคลาสหลัก (Superclass)
cat.meow() # เมธอดของคลาสย่อย (Subclass)