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

 

คุณอาจสนใจ
การพิมพ์ตัวอักษรวิ่งรอบวงกลม
Webmaster siamicy.com (62,757 - 27 มิ.ย. 49)
การทำ Flash Popup menu
Black-Hawk (105,050 - 22 ม.ค. 51)
ลบ Help and Suport ออกจาก Start เมนูของคุณ XP
เว็บไทยดีดี (14,464 - 01 ก.ย. 50)
ทำความรู้จักกับ java
Mr.POP (41,249 - 05 พ.ย. 49)
ล้วงลึกเทคโนโลยี Hyper - Threading Technology (HT Technology)
เว็บไทยดีดี (14,788 - 29 ก.ย. 50)
ห้ามเปลี่ยนตำแหน่งไอคอนที่จัดเรียงไว้หน้าจอ XP
เว็บไทยดีดี (16,146 - 26 ม.ค. 51)
วิธีการทำ Selection โดยใช้ Quick Mask Mode
Lee (98,963 - 20 ก.ย. 49)
การสลับสี table
Zerohate (54,667 - 28 พ.ย. 50)