Inheritance จัดทำโดย : Mr.POP พิมพ์
 Untitled Document

สวัสดีครับ เคยได้ยินคำว่า inheritance ไหมครับ? สำหรับนักเขียนโปแกรมมือเก่าทั้งหลายน่าจะรู้จักคำนี้กันดี มันคือคุณสมบัติอย่างหนึ่งของการเขียนโปรแกรมแบบ OOP ครับ ลองมาดูความหมายของ inheritance กันครับ

ความหมายของ inheritance
inheritance เป็นคุณสมบัติในการถ่ายทอดเป็นจุดเด่นอย่างหนึ่งของ OOP โดยสามารถสร้างคลาสหลักขึ้นมา 1 คลาสแล้วกำหนดให้มีคุณสมบัติต่างๆ ที่จำเป็นต้องมี แล้วจึงสร้างคลาสอีกคลาสหนึ่งขึ้นมาเพื่อรับคุณสมบัติทั้งหมดจากคลาสหลัก และเพิ่มคุณสมบัติอื่นเข้าไปอีกในคลาสนี้ เราจะเรียกคลาสหลักว่า “Superclass”(คลาสแม่) และเรียกคลาสย่อยว่า “Subclass”(คลาสลูก)

จากรูป Class A ก็เปรียบเหมือน “Superclass” ซึ่งเป็นคลาสหลักที่เป็นต้นแบบ ส่วน Class B และ Calss C นั้นเป็นคลาสที่สืบทอดคุณสมบัติจาก Class A มาอีกทีนึงเราเรียกว่า “Subclass” ซึ่งภายในคลาส B และ C จะสามารถเข้าถึงสมาชิกหรือ Method ต่างๆ ของคลาส A ได้ ตัวอย่างเช่น

การสร้าง Superclass และ Subclass
Superclass จะสร้างเหมือนกับการสร้าง Class ทั่วไป แต่การสร้าง Subclass จะระบุคำว่า “extends” ร่วมด้วยเพื่อให้ทราบว่า Subclass จะใช้คุณสมบัติจาก Superclass ชื่ออะไร มีรูปแบบดังนี้

class ชื่อ subclass extends ชื่อ superclass
เช่น class B extends class A จะหมายถึง คลาส B เป็น subclass ของ class A ตัวอย่างเช่น

class A { int x ; }
class B extends class A { int y ; }

ทำการสร้าง instance จากคลาสทั้ง 2
A a = new A() ;
B b= new B() ;

คลาส A มีสมาชิก 1 ตัวคือ x และคลาส B สืบทอดคุณสมบัติของคลาส A โดยในคลาส B มีสมาชิก 1 ตัวคือ y เมื่อเราสร้าง insatnce จากคลาส B เราจะได้สมาชิกของคลาส A คือ x มาใช้งานได้ด้วย ลองมาดูตัวอย่างจากโปรแกรมกันครับ

อธิบายโปรแกรม โปรแกรมนี้มี 3 class โดยที่ class out2 จะสืบทอดคุณสมบัติจาก class out1 ให้เรามาดูที่ class Inherit นะครับมีการสร้าง instance 2 ตัว คือ sup จะเป็น instance ของคลาส out1 และ sub จะเป็น instance ของคลาส out2 บรรทัดที่ 24 และ 25 เป็นการ assign ค่าให้กับ i , j โดยใช้ sup จากนั้นก็เรียก showij() มาแสดงผลอันนี้ไม่แปลกนะครับเพราะ sup เป็น instance ของคลาส out1 อยู่แล้ว แต่พอมาดูที่บรรทัด 27 และ 28 จะเห็นว่ามีการ assign ค่าให้กับ i , j ใหม่โดยใช้ sub ซึ่งเป็น instance ของคลาส out2 ซึ่งใน out2 ไม่ได้ประกาศตัวแปรทั้งไว้เลย แต่ที่ทำแบบนี้ได้เพราะคุณสมบัติ inheritance นั่นแหละครับที่ทำให้ sub สามารถใช้งาน i , j ได้และนอกจากนั้นยังเรียกใช้ Method showij() ที่อยู่ในคลาส out1 ได้อีกด้วยในบรรทัดที่ 30 ลองสังเกตผลลัพธ์ที่ได้ดูนะครับ

สำหรับเรื่อง inheritance นี้ก็ถือว่าเป็นคุณสมบัติที่สำคัญสำหรับภาษาประเภท OOP นะครับไม่ว่าจะเป็นภาษาใดก็ตามที่โครงสร้างแบบ OOP จะต้องหนีไม่พ้นการใช้คุณสมบัติ inheritance อย่างแน่นอน ลองฝึกฝนเขียนโครงสร้างแบบที่มีการ inheritance ไว้นะครับจะได้เข้าใจมากยิ่งขึ้น ขอจบบทความเพียงเท่านี้ครับ สวัสดีครับ...

 

คุณอาจสนใจ
เจาะลึกการใช้ Symbolism Tool และ Data Driven Graphic กับงานพิมพ์ และงานเว็บ (ตอนจบ)
ธนิศา ไชยภูริพัฒน์ (32,403 - 19 ม.ค. 51)
การใช้ปุ่ม Show/Hide
นายนุก (19,972 - 12 ก.พ. 51)
สร้างลูกตาสวยๆ
langjuko (277,999 - 20 ต.ค. 51)
ลบลูกศรที่ icon desktop อย่างไร
เว็บไทยดีดี (17,884 - 27 ต.ค. 50)
เทคนิคการทำไฟล์ config.inc.php
Mr.GuruZ (43,724 - 03 มิ.ย. 49)
เทคนิคการสร้างงานเว็บกับ Adobe ImageReady CS (ตอนที่ 1)
สหรัถ แซ่ตั้ง (48,198 - 06 ต.ค. 50)
การเปิดใช้งานโหมด Graphic ใน php
Mr.GuruZ (28,929 - 03 มิ.ย. 49)
วิธีเพิ่ม Undo ใน PowerPoint
หมูขุน (19,011 - 06 ต.ค. 50)