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

 

คุณอาจสนใจ
วิธีดูแลหน้าจอ LCD ให้ใสปิ๊งอยู่เสมอ
เว็บไทยดีดี (20,337 - 01 มี.ค. 51)
วิธีการทำงานของเมล์แบบ IMAP
เว็บไทยดีดี (15,074 - 29 ก.ย. 50)
การวาดรูปโดยใช้เส้นอิสระ
หมูขุน (19,379 - 04 ก.พ. 50)
Dream MX Connect DB
dooidea team (58,934 - 21 มี.ค. 51)
ลบไฟล์ขยะที่ XP ทิ้งเอาไว้หลังอัปเกรดวินโดวส์
เว็บไทยดีดี (15,605 - 01 ก.ย. 50)
สร้างโปรเตอร์แบบเก๋ๆ
langjuko (152,548 - 26 ส.ค. 51)
เทคนิคการสร้าง MessageBox ใน Visual C++ แบบกําหนด format
langjuko (23,009 - 16 ก.ย. 51)
การกำหนดสีให้ Link
Mr.GuruZ (40,916 - 04 มิ.ย. 49)