การทำงานแบบ สืบทอด class บน Python

แชร์ความรู้ภาษา Python ไพทอน การเขียนโปรแกรมภาษาไพทอน

Moderator: mindphp, ผู้ดูแลกระดาน

tatiya
PHP Super Hero Member
PHP Super Hero Member
โพสต์: 538
ลงทะเบียนเมื่อ: 09/07/2018 9:35 am

การทำงานแบบ สืบทอด class บน Python

โพสต์โดย tatiya » 14/08/2018 7:16 pm

การสืบทอดคลาส คือการที่คลาสหรือออบเจ็ค ได้รับการถ่ายทอดแอตทริบิวต์และเมธอดจากคลาสอื่น นั่นจะทำให้คลาสดังกล่าวมีแอตทริบิวต์และเมธอดเหมือนคลาสที่มันสืบทอดมา

มาดูตัวอย่างจาก code นี้นะครับ
ตัวอย่างนี้ผมจะยกตัวอย่าง โดยที่จะสร้าง Class Person เป็น super class และสร้าง Class Eployee เป็น Class ลูก

โค้ด: เลือกทั้งหมด

class Person:

    def __init__(self, firstName, lastName):
        self.firstName = firstName
        self.lastName = lastName

    def getName(self):
        return self.firstName + ' ' + self.lastName


class Employee(Person):

    def setWorkDetail(self, department, position):
        self.department = department
        self.position = position

    def getWorkDetail(self):
        return self.position + ', ' + self.department


emp1 = Employee('Mr.MDsoft', 'Mindphp')
emp1.setWorkDetail('Software Engineer', 'Python programmer')

print('Name: ' + emp1.getName())
print('Work: ' + emp1.getWorkDetail())
print("\n")
emp2 = Employee('เรียนดี', 'เพราะรักเรียน')
emp2.setWorkDetail('Sound Engineer', 'Musical acoustics')

print('Name: ' + emp2.getName())
print('Work: ' + emp2.getWorkDetail())


ผลลัพท์คือ
Name: Mr.MDsoft Mindphp
Work: Python programmer, Software Engineer

Name: เรียนดี เพราะรักเรียน
Work: Musical acoustics, Sound Engineer


ในตัวอย่าง เราได้สร้างคลาส Person ซึ่งคลาสนี้เป็น super class เพื่อที่จะนำไปให้คลาสอื่นสืบทอด ในคลาสมีสองแอตทริบิวต์คือ firstName ใช้สำหรับเก็บชื่อ และ lastName ใช้สำหรับเก็บนามสกุล และมีเมธอด getName() เพื่อรับชื่อและนามสกุลได้ในพร้อมกัน

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

หลังจากเราได้สร้างคลาสเสร็จแล้ว ต่อไปเป็นการนำมาใช้งาน เราได้สร้างออบเจ็คของ Employee ขึ้นมาสองออบเจ็คคือ emp1 และ emp2 แต่ละออบเจ็คได้มีการกำหนดชื่อและนามสกุล และมีการกำหนดข้อมูลการทำงาน หลังจากนั้นเป็นการแสดงข้อมูลเกี่ยวกับแต่ละคน โดยแสดงชื่อและข้อมูลการทำงาน

ย้อนกลับไปยัง

ผู้ใช้งานขณะนี้

กำลังดูบอร์ดนี้: 12 และ บุคคลทั่วไป 0 ท่าน