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
ทดสอบการทางาน