Transcript class A

การสืบทอด (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 สัตว์ {
}
class ปลา extends สัตว์ {
}
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
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(a.x);
System.out.println(b.x);
a = b;
System.out.println(a.x);
System.out.println(b.x);
}
}
Output???
Overriding Method



เป็ นการแก้ไขเมธอดที่สืบทอดมาจากคลาสแม่
คลาสลูกต้องมีชื่อเมธอด ค่าที่ส่งกลับออกจากเมธอด ค่าอาร์กิวเมนต์เหมือน
คลาสแม่
แต่ปรับปรุงการทางานการทางานภายในที่ไม่เหมือนกับคลาสแม่
Final Class

Final เป็ นคียเ์ วิรด์ ที่ใช้นาหน้าตัวแปร เมธอด และคลาส ซึ่งจะทาให้มีคึณ
สมบัติดงั ดังนี้
 ทาให้ตวั แปรเป็ นค่าคงที่
ไม่สามารถเปลี่ยนแปลงค่าได้
 ทาให้เมธอดไม่สามารถ Override ได้
ทดสอบการสืบทอดคุณสมบัติ
สร้างคลาสแม่
สร้างคลาสลูก1
สร้างคลาสลูก2
ทดสอบการทางาน