การสืบทอดคุณสมบัติ (Inheritance) การสร้างคลาสใหม่จากรูปแบบของคลาสเดิมที่มีอยู่แล้ว คลาสใหม่จะนำคุณสมบัติ (แอตทริบิวต์และเมธอด) ของคลาสเดิมมาใช้ได้ เพื่อประโยชน์ในการเรียกใช้สมาชิกที่อยู่ในคลาสเดิม โดยไม่จำเป็นต้องสร้างขึ้นอีกในคลาสใหม่ เรียก คลาสเดิมที่มีอยู่แล้ว ว่า “คลาสแม่” (SuperClass) เรียก คลาสใหม่ ว่า “คลาสลูก” (SubClass)
การสืบทอดคุณสมบัติ (Inheritance) ตัวอย่าง
การสืบทอดคุณสมบัติ (Inheritance) ตัวอย่าง
การสืบทอดคุณสมบัติ (Inheritance) ตัวอย่าง
การสืบทอดคุณสมบัติ (Inheritance) เริ่มต้นจากการสร้างคลาสแม่ class Car { protected String CarID, Color; protected int Speed; protected void Start() { } protected char ChangeGear() { protected void Stop() {
การสืบทอดคุณสมบัติ (Inheritance) class Car { protected String CarID, Color; protected int Speed; protected void Start() { } protected char ChangeGear() { protected void Stop() { การสืบทอดคุณสมบัติ (Inheritance) ใช้คีย์เวิร์ด extends เพื่อ ระบุการสืบทอดคุณสมบัติ class Bus extends Car { int Seat; void Accelerate() { } class SportCar extends Car { String CodeName; void Accelerate() { }
การสืบทอดคุณสมบัติ (Inheritance) เมื่อสร้างความสัมพันธ์ให้คลาสเป็น คลาสแม่-คลาสลูกแล้ว คลาสลูกมีคุณสมบัติดังนี้ เรียกใช้และเปลี่ยนแปลงแอตทริบิวต์และเมธอดของคลาสแม่ ตัวอย่างโปรแกรมที่ 1 แสดงแผนภาพ เปลี่ยนแปลงเมธอดของคลาสแม่ โดยนำเมธอดของคลาสแม่มาแก้ไขการทำงาน สร้างเป็นเมธอดไว้ในคลาสลูก เรียกว่า Overriding Method
การสืบทอดคุณสมบัติ (Inheritance) แผนภาพตัวอย่างโปรแกรมที่ 1 employee rate:float daily_emp monthly_emp
Overriding Method มีการใช้เมธอดที่มีชื่อเหมือนกันมากกว่า 1 เมธอด ทำงานแบบเดียวกัน ภายใต้คลาสที่เป็นคลาสแม่ - ลูกกัน คลาสลูกสามารถเขียนทับเมธอดของคลาสแม่ขึ้นใหม่ได้ ใช้ชื่อเดียวกัน จำนวนอาร์กิวเมนต์เท่ากัน ชนิดข้อมูลของอาร์กิวเมนต์เหมือนกัน ชนิดข้อมูลของที่คืนค่าเหมือนกัน
ตัวอย่างโปรแกรมที่ 3 class shape { float calArea(float x,float y) { return 0; } class tri extends shape { return 0.5f*x*y; class rec extends shape { return x*y; public class OverridingMethod { public static void main(String[] args) { System.out.println("triangle area = " + new tri().calArea(2,2)); System.out.println("rectangle area = " + new rec().calArea(2,2)); }
การสืบทอดคุณสมบัติ (Inheritance) แบบฝึกหัดข้อ 1 คลาสพนักงาน employee ประกอบด้วย พนักงาน 2 ประเภท คือ salesman และ manager คิดค่าคอมมิสชั่น จาก เปอร์เซ็นต์ค่าคอมมิสชั่น x ยอดขาย โดย salesman และ manager ได้เปอร์เซ็นต์ค่าคอมมิสชั่น เท่ากับ employee คือ 5% ยกเว้นในกรณีที่ salesman มียอดขายมากกว่า 5 แสน จะได้ เปอร์เซ็นต์ค่าคอมมิสชั่นเพิ่มเป็น 7.5% ให้คำนวณค่าคอมมิสชั่น ของ employee => รับข้อมูลยอดขาย ให้คำนวณค่าคอมมิสชั่น ของ salesman => รับข้อมูลยอดขาย ให้คำนวณค่าคอมมิสชั่น ของ manager => รับข้อมูลยอดขาย
การสืบทอดคุณสมบัติ (Inheritance) แบบฝึกหัดข้อ 1 คลาสแม่ คือ employee ประกอบด้วย แอตทริบิวต์ perCom=0.05f; เมธอด calCom(float sale) คลาสลูก คือ salesman ประกอบด้วย แอตทริบิวต์ เมธอด คลาสลูก คือ manager ประกอบด้วย แสดงแผนภาพ เขียนโปรแกรม สร้างคลาส โปรแกรมหลัก