1 / 36

บทที่ 7 การสืบทอด (Inheritance)

บทที่ 7 การสืบทอด (Inheritance) . และ (Reusable) การนำ กลับ มาใช้ใหม่. ทบทวนความรู้เดิมก่อนเรียน. ระดับการเข้าใช้ class ,attribute, method ระดับ ต่าง ๆ public กำหนดให้ class, attribute, method ? ไม่ได้เขียนอะไร กำหนดให้ class ,attribute, method ?

sierra
Download Presentation

บทที่ 7 การสืบทอด (Inheritance)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. บทที่ 7การสืบทอด (Inheritance) และ (Reusable) การนำกลับมาใช้ใหม่

  2. ทบทวนความรู้เดิมก่อนเรียนทบทวนความรู้เดิมก่อนเรียน ระดับการเข้าใช้ class ,attribute, method ระดับ ต่างๆ • public กำหนดให้ class, attribute, method? • ไม่ได้เขียนอะไร กำหนดให้ class ,attribute, method ? • protected กำหนดให้ attribute, method ? • private กำหนดให้ attribute , method?

  3. เนื้อหา ตอนที่ 1 • การสืบทอด (Inheritance) • class แม่ (super class) , class ลูก (subclass) • รู้จัก keyword“extends” • รู้จักคำว่า method Overriding (การ override เมธอด) • รู้จัก keyword“super” • final class ,final method

  4. การสืบทอด (Inheritance) คืออะไร เป็นคุณสมบัติหนึ่งของ OOP ที่อนุญาตให้ผู้เขียนโปรแกรมสามารถสร้าง class ใหม่โดยสืบทอดเอาคุณสมบัติต่าง ๆ มาจาก class ที่มีอยู่แล้ว

  5. คลาสแม่(superclass ), คลาสลูก(supclass) คืออะไร “เมื่อ class หนึ่งสืบทอดคุณสมบัติมาจากอีก class หนึ่ง” • เราจะเรียกclassที่ถูกสืบทอดคุณสมบัติไปว่า คลาสแม่(superclass) • และเรียก class ที่สืบทอดคุณสมบัติมาว่า คลาสลูก(subclass) เช่น classA เป็นคลาสแม่ของ class B (class B เป็นคลาสลูกของ class A) คือclass B ทำการสืบทอดคุณสมบัติมาจาก class A

  6. Keyword “extends” ใช้ระบุให้กับ class เพื่อกำหนดว่า class นั้น ต้องการสืบทอดคุณสมบัติมาจาก class ใด รูปแบบ superclass, คลาสแม่ subclass, คลาสลูก [modifier] class ชื่อคลาส extendsชื่อคลาสที่ถูกสืบทอด{ }

  7. ข้อแตกต่าง [modifier] class ชื่อคลาส { } [modifier] class ชื่อคลาส extendsชื่อคลาสที่ถูกสืบทอด{ }

  8. ตัวอย่าง1 ชื่อคลาส ชื่อคลาสที่ถูกสืบทอด public class Student extends People{ } • อธิบาย • class Student สืบทอดคุณสมบัติมาจาก class People • class Student เป็น supclass(คลาสลูก) • class People เป็น superclass(คลาสแม่)

  9. ตัวอย่าง2 ชื่อคลาส ชื่อคลาสที่ถูกสืบทอด public class Manager extends Employee{ } • อธิบาย • class Managerสืบทอดคุณสมบัติมาจาก class Employee • class Managerเป็น supclass(คลาสลูก) • class Employeeเป็น superclass(คลาสแม่)

  10. class แม่สามารถถ่ายทอดอะไรให้แก่ class ลูก? • ถ่ายทอด attribute , method class ลูกสามารถเรียกใช้งาน attribute และ methodที่สืบ ทอดมาได้เลย เสมือนถูกสร้างไว้ใน class ลูกเอง • นอกจากนี้ class ลูกสามารถกำหนด attribute ,method สร้างเพิ่มเติมเข้าไปใน class ลูกได้ด้วย • ดังนั้น class ลูกมี attribute และ method ที่ได้รับถ่ายทอดมา และก็มี attribute และ method ที่สร้างขึ้นมาเองเพิ่มเติม

  11. Inheritance (การสืบทอดคุณสมบัติ) คลาสแม่ (Super Class) “Employee” Emp_ID position Emp_ID Position Emp_ID Position Position_Car Hout_per_mounth คลาสลูก (SubClass) “SecurityGuard” คลาสลูก (SubClass) “Manager

  12. single inheritance • class 1 class สามารถ extends มาจาก class ใดๆ ได้แค่ 1 class ตัวอย่างที่ผิด class A extends B,C{ }

  13. ทำไมต้องสืบทอด ? • การที่เรานำหลักการของ inheritance มาใช้ก็เพื่อประหยัดเวลาในการสร้าง class คือ จะได้นำสิ่งที่มีอยู่แล้วใน class เดิมมาใช้ได้เลย โดยที่ไม่ต้องเสียเวลาสร้างใหม่

  14. ฝึกปฏิบัติไปด้วย จะได้เข้าใจมากยิ่งขึ้น

  15. People - name : String + age : int # address :String + setName(n:String) + getName(): String คลาสแม่super class Student - name : String + age : int # address : String + grade :double + setName(n:String) + getName(): String + printData() extends Student + grade :double + printData() คลาสลูกsub class

  16. People - name : String + age : int # address : String + setName(n:String) + getName(): String

  17. People - name : String + age : int # address : String + setName(n:String) + getName(): String extends Student + grade :double + printData()

  18. People - name : String • + age : int • # address : String + setName(n:String) + getName(): String สร้าง class “Test_Student”ขึ้นใหม่เพื่อทดลองเรียกใช้ Class Student extends Student + grade :double + printData()

  19. Overriding คืออะไร? คือ“การแก้ไข method ที่ได้รับการ ถ่ายทอดมาจาก class แม่”

  20. อย่างไรถึงเรียกว่า เมธอดถูกทำการ Override • เมธอดใน class ลูกมีชื่อเหมือนกับ เมธอดใน class แม่ • ค่าที่ถูกส่งกลับออกไป (return type) เป็นข้อมูลชนิดเดียวกัน • argument ที่ส่งเข้ามาใน method จำนวนข้อมูลและชนิดข้อมูลเดียวกัน (เหมือนกัน)

  21. ประโยชน์ของการ Overriding • จะช่วยให้ class ลูกสามารถแก้ไขหรือเพิ่มเติมการทำงานบางอย่างของเมธอดที่ได้รับการถ่ายทอดมาจาก class แม่ • กระบวนการนี้เรียกว่า method overriding

  22. ตัวอย่าง method จาก class แม่ method ของ class ลูก

  23. ตัวอย่าง method จาก class แม่ method ของ class ลูก

  24. การแก้ไข ระดับการเข้าใช้ (Access modifier) • Access modifier ต้องมากกว่าหรือเท่ากัน private package , default ,none protected public มาก

  25. การแก้ไข ระดับการเข้าใช้ (Access modifier) • Access modifier ต้องมากกว่าหรือเท่ากัน private package , default ,none protected public มาก

  26. Overriding methods People - name : String + age : int # address : String + setName(n:String) + getName(): String extends Student + grade :double + getName(): String + printData()

  27. ทดสอบเรียกใช้ Overridden Methods People - name : String + age : int # address : String + setName(n:String) + getName(): String สร้าง class เพื่อทดสอบชื่อ”Test_Student2” extends Student + grade :double + getName(): String + printData()

  28. รู้จัก keyword “super” เป็น keyword ที่ใช้อ้างอิงถึง member[attribute,method]ของ superclassของ class นั้น ๆ รูปแบบ super.ชื่อเมธอด([อากิวเมนต์]); super.ชื่อattribute;

  29. การเรียกใช้ overridden methods โดย super ตัวอย่าง 1 People - name : String + age : int # address : String + setName(n:String) + getName(): String • แก้ไข class Student ดังนี้ extends Student + grade :double + getName(): String + printData()

  30. ทดสอบ People - name : String + age : int # address : String + setName(n:String) + getName(): String extends Student + grade :double + getName(): String + printData()

  31. การเรียกใช้ overridden methods โดย super ตัวอย่าง 2 • แก้ไข class Student ดังนี้

  32. ทดสอบ

  33. การห้ามสืบทอด class (final class) • ถ้าเราไม่ต้องการให้มี class ใดมาสืบทอดคลาสนี้ได้ สามารถกำหนด keywordfinal ประกอบกับการประกาศ class ตัวอย่าง 1.สร้าง class “A” กำหนด final ประกอบกับการประกาศ class 2. สร้าง class “B” เพื่อทดสอบ extends

  34. การปกป้องไม่ให้ override method (final method) • ถ้าเราไม่ต้องการให้มี class ที่สืบทอด override เมธอดใดเรา สามารถกำหนด keywordfinal ประกอบกับการประกาศ method ตัวอย่าง 1.สร้าง class “A” ดังนี้ 2. สร้าง class “B” extends “A” แล้วทดสอบ override getID()

  35. สรุป • การสืบทอดในแนวคิดของ OOP ใช้แนวความคิดเดียวกับการถ่ายทอดคุณลักษณะจากพ่อและแม่ • การสืบทอดทำให้เกิดการนำไปใช้ใหม่ได้ (Reusable) • เมธอดที่ใช้กับ class แม่ได้ ก็สามารถใช้กับ class ลูกได้ • class ลูกสามารถ override เมธอดใน class แม่ได้ • ถ้า class ลูกอยู่ต่าง package กับ class แม่ ,class ลูกสามารถเรียกใช้ เมธอดของ class แม่ได้ในกรณีที่ methodกำหนดการเข้าใช้ระดับ public หรือ protected

  36. final • กำหนดให้กับ class ? • กำหนดให้กับ attribute ? • กำหนดให้กับ method ?

More Related