การสืบทอด (Inheritance)
ความหมายของ Inheritance การสร้างหรือพัฒนาคลาสใหม่จากคลาสเดิมที่มีอยู่แล้ว โดยคลาสใหม่จะนำ แอตทริบิวต์และเมธอดของคลาสเดิมมาใช้ เรียกคลาสที่ถ่ายทอดคุณสมบัติของคลาสว่า คลาสแม่ (Super Class) เรียกคลาสที่ได้รับการถ่ายทอดคุณสมบัติของคลาสว่า คลาสลูก (Sub Class)
ความหมายของ Inheritance (ต่อ)
สิ่งที่ควรรู้เกี่ยวกับการ Inheritance Super Class Sub Class Final Class Override method
คลาสแม่ (Super Class) เป็นคลาสที่ถูกใช้เป็นต้นแบบของแอตทริบิวต์และเมธอด บางครั้งเรียกว่า parent-class หรือ base-class อนุญาตให้คลาสอื่นสืบทอดแอตทริบิวต์และเมธอด ได้ทั้งหมด ยกเว้น แอตทริบิวต์ที่มีระดับการเข้าถึงเป็น private เมธอดที่เป็น Constructor ระดับการเข้าถึงแอตทริบิวต์และเมธอดของคลาสแม่ต้องกำหนดเป็น protected
คลาสลูก (Sub Class) เป็นคลาสที่สืบทอดแอตทริบิวต์และเมธอด จากคลาสแม่ สามารถเรียกใช้แอตทริบิวต์และเมธอดที่สืบทอดมาจากคลาสแม่ได้ สามารถมีแอตทริบิวต์และเมธอดเพิ่มเติมได้ การระบุหรือกำหนดความสัมพันธ์ให้คลาสเป็นคลาสลูกต้องใช้คีย์เวิร์ด extends รูปแบบการสร้าง class ชื่อ Sub Class extends ชื่อ Super Class { …….. }
สัตว์ต่างๆ คลาสแมว คลาสปลา คลาสลิง แอตทริบิวต์ ได้แก่ อายุ และ ความหิว เมธอด ได้แก่ กิน() และ นอน() คลาสปลา แอตทริบิวต์ ได้แก่ อายุ ความหิว และชื่อ (เช่น ปลานีโม) คลาสลิง เมธอดได้แก่ กิน() นอน() และเก็บลูกมะพร้าว()
แอตทริบิวท์และเมธอดที่คล้ายกัน
ตัวอย่างการสืบทอด ตัวอย่าง } class ลิง extends สัตว์ {
ตัวอย่าง Super Class และ Sub Class class A : parent class/base class/super class class B : child class/extended class/sub class class A { void printA() { System.out.println(‘A’); } class B extends A { void printB() { System.out.println(‘B’);
ตัวอย่าง Super Class และ Sub Class (ต่อ) การเรียกใช้งาน class InheritTest1 { public static void main(String args[]) { A x = new A(); x.printA(); B y = new B(); y.printA(); y.printB(); } Output???
ตัวอย่าง 2 Output??? class AA { int x = 1;} class BB extends AA { int y = 2; } class Inherit2 { public static void main(String args[]) { AA a = new AA(); System.out.println(a.x); BB b = new BB(); System.out.println(b.x + "," + b.y); b.x--; System.out.println(b.x); a = b; } Output???
Overriding Method เป็นการแก้ไขเมธอดที่สืบทอดมาจากคลาสแม่ คลาสลูกต้องมีชื่อเมธอด ค่าที่ส่งกลับออกจากเมธอด ค่าอาร์กิวเมนต์เหมือน คลาสแม่ แต่ปรับปรุงการทำงานการทำงานภายในที่ไม่เหมือนกับคลาสแม่
Final Class Final เป็นคีย์เวิร์ดที่ใช้นำหน้าตัวแปร เมธอด และคลาส ซึ่งจะทำให้มีคึณ สมบัติดังดังนี้ ทำให้ตัวแปรเป็นค่าคงที่ ไม่สามารถเปลี่ยนแปลงค่าได้ ทำให้เมธอดไม่สามารถ Override ได้
ทดสอบการสืบทอดคุณสมบัติ
สร้างคลาสแม่
สร้างคลาสลูก1
สร้างคลาสลูก2
ทดสอบการทำงาน