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 ไว้นะครับจะได้เข้าใจมากยิ่งขึ้น ขอจบบทความเพียงเท่านี้ครับ สวัสดีครับ...

 

คุณอาจสนใจ
ใช้ Quad-Core เลยดีไหม ?
สายลม (17,531 - 26 เม.ย. 51)
การตั้งค่าฟอนต์ให้เป็นค่าเริ่มต้น
อ้อม (27,682 - 13 ม.ค. 50)
การสุ่ม Password
Mr.GuruZ (36,057 - 03 มิ.ย. 49)
การใช้ปุ่ม Show/Hide
นายนุก (19,831 - 12 ก.พ. 51)
การแทรก FlashButton ลงในเว็บเพจ
Baddevil (26,670 - 26 พ.ย. 50)
ความรู้เบื้องต้นเกี่ยวกับ 3D Stodio Max
เว็บไทยดีดี (38,766 - 02 เม.ย. 51)
เหตุใด Flash drive ถึงมีความสำคัญ
เว็บไทยดีดี (18,274 - 18 ส.ค. 50)
การคำนวณข้ามชีท
nut (61,083 - 02 ก.ค. 49)