ถ่ายทอดคุณสมบัติ (Inheritance) และการ หลักการโอเวอร์ไลน์ (Overriding)

Download Report

Transcript ถ่ายทอดคุณสมบัติ (Inheritance) และการ หลักการโอเวอร์ไลน์ (Overriding)

บทที่ 3 การสื บทอด (Inheritance)
และ (Reusable) การนากลับมาใช้ใหม่ และการ
Overriding method
คำอธิบำยรำยวิชำ :
แนวคิดพืน้ ฐำนเกีย่ วกับกำรออกแบบ และพัฒนำโปรแกรมเชิ ง
วัตถุโครงสร้ ำงของภำษำเชิงวัตถุ
 เช่ น คลำส ออปเจ็ค เมธอด
 อินเตอร์ เฟส
 แพคแกจ
 กำรสื บทอดคลำส
 เอนแคปซู เลชั่ น
 และพอริ มอร์ ฟิซึม
 เอพีไอของภำษำทีใ่ ช้ ในกำรเขียนโปรแกรมเชิ งวัตถุ

สิ่ งที่จะเรี ยนรู้ใน Week นี้
วันนี้จะยังไม่ลงรายละเอียด
จะไปเรี ยนในหัวข้อเรื่ อง การปกป้ องข้อมูล (Encapsulation))
ระดับการเข้าใช้ class ,attribute, method ระดับ ต่าง ๆ
 public กาหนดให้ class, attribute, method ?
 ไม่ได้เขียนอะไร กาหนดให้ class ,attribute, method ?
 protected กาหนดให้ attribute, method ?
 private กาหนดให้ attribute , method?
เนื้อหา ตอนที่ 1
 การสื บทอด (Inheritance)
 class แม่ (super class) , class ลูก (subclass)
 รู ้จกั keyword
“extends”
 รู ้จกั คาว่า method Overriding (การ override เมธอด)
 รู ้จกั keyword “super”
 final class ,final method
การสื บทอด (Inheritance) คืออะไร
เป็ นคุณสมบัติหนึ่งของ OOP ที่อนุญาตให้ผเู้ ขียนโปรแกรม
สามารถสร้าง class ใหม่โดยสื บทอดเอาคุณสมบัติต่าง ๆ มาจาก
class ที่มีอยูแ่ ล้ว
คลาสแม่(super class ) , คลาสลูก(sup class) คืออะไร
“เมื่อ class หนึ่งสื บทอดคุณสมบัตมิ ำจำกอีก class หนึ่ง”
 เราจะเรี ยกclassที่ถูกสื บทอดคุณสมบัติไปว่า คลาสแม่(super class
 และเรี ยก class ที่สืบทอดคุณสมบัติมาว่า คลาสลูก(sub class)
เช่น
class A เป็ นคลาสแม่ของ class B
(class B เป็ นคลาสลูกของ class A)
คือclass B ทาการสื บทอดคุณสมบัติมาจาก class A
Keyword “extends”
ใช้ระบุให้กบั class เพื่อกาหนดว่า class นั้น ต้องการสื บทอด
คุณสมบัติมาจาก class ใด subclass,
superclass,
รู ปแบบ
คลาสลูก
คลาสแม่
[modifier] class ชื่อคลาส extends ชื่อคลาสที่ถูกสื บทอด{
}
ข้อแตกต่าง
[modifier] class ชื่อคลาส {
}
[modifier] class ชื่อคลาส extends ชื่อคลาสที่ถูกสื บทอด{
}
ชื่อคลาส
ชื่อคลาสที่ถูกสื บทอด
ตัวอย่าง1
public class Student extends People{
}
อธิบาย
 class Student สื บทอดคุณสมบัติมาจาก class People
 class Student เป็ น sup class (คลาสลูก)
 class People เป็ น super class (คลาสแม่)
ชื่อคลาส
ชื่อคลาสที่ถูกสื บทอด
ตัวอย่าง2
public class Manager extends Employee{
}
อธิบาย
 class Manager สื บทอดคุณสมบัติมาจาก class Employee
 class Manager เป็ น sup class (คลาสลูก)
 class Employee เป็ น super class (คลาสแม่)
class แม่ สามารถถ่ายทอดอะไรให้แก่ class ลูก?
ถ่ายทอด attribute , method
class ลูกสามารถเรี ยกใช้งาน attribute และ method ที่สืบ
ทอดมาได้เลย เสมือนถูกสร้างไว้ใน class ลูกเอง
 นอกจากนี้ class ลูกสามารถกาหนด attribute ,method
สร้างเพิ่มเติมเข้าไปใน class ลูกได้ดว้ ย
 ดังนั้น class ลูกมี attribute และ method ที่ได้รับถ่ายทอดมา
และก็มี attribute และ method ที่สร้างขึ้นมาเองเพิม่ เติม

Inheritance (การสื บทอดคุณสมบัติ)
คลาสแม่ (Super Class)
“Employee”
Emp_ID
position
Emp_ID
Position
Position_Car
คลาสลูก (SubClass)
“Manager
Emp_ID
Position
Hout_per_mounth
คลาสลูก (SubClass)
“SecurityGuard”
Inheritance (การสื บทอดคุณสมบัติ)
single inheritance
class 1 class สามารถ extends มาจาก class ใดๆ
ได้แค่ 1 class
ตัวอย่างที่ผดิ
class A extends B,C{
}
ทาไมต้องสื บทอด ?
 การที่เรานาหลักการของ inheritance มาใช้กเ็ พื่อประหยัดเวลาใน
การสร้าง class คือ จะได้นาสิ่ งที่มีอยูแ่ ล้วใน class เดิมมาใช้ได้เลย
โดยที่ไม่ตอ้ งเสี ยเวลาสร้างใหม่
Overriding คืออะไร?
คือ“การแก้ไข method ที่ได้รับการ
ถ่ายทอดมาจาก class แม่”
อย่างไรถึงเรี ยกว่า เมธอดถูกทาการ Override
1.
2.
3.
เมธอดใน class ลูกมีชื่อเหมือนกับ เมธอดใน class แม่
ค่าที่ถูกส่ งกลับออกไป (return type) เป็ นข้อมูลชนิด
เดียวกัน
argument ที่ส่งเข้ามาใน method จานวนข้อมูลและ
ชนิดข้อมูลเดียวกัน (เหมือนกัน)
ประโยชน์ของการ Overriding
 จะช่วยให้ class ลูกสามารถแก้ไขหรื อเพิม
่ เติมการ
ทางานบางอย่างของเมธอดที่ได้รับการถ่ายทอดมาจาก
class แม่
 กระบวนการนี้ เรี ยกว่า method overriding
ตัวอย่าง
method จาก class แม่
method ของ class ลูก
ตัวอย่าง
method จาก class แม่
method ของ class ลูก
การแก้ไข ระดับการเข้าใช้ (Access modifier)
Access modifier ต้องมากกว่าหรื อเท่ากัน
private
package , default ,none
protected
public
มาก
การแก้ไข ระดับการเข้าใช้ (Access modifier)
Access modifier ต้องมากกว่าหรื อเท่ากัน
private
package , default ,none
protected
public
มาก
รู้จกั keyword “super”
เป็ น keyword ที่ใช้อา้ งอิงถึง member [attribute,method]ของ
superclass ของ class นั้น ๆ
รู ปแบบ
super.ชื่อเมธอด([อากิวเมนต์]);
super.ชื่อattribute;

ตัวอย่าง
People
- name : String
+ age : int
# address :String
+ setName(n:String)
+ getName(): String
+setAge(age:int)
+getAge():int
+setAddress(addresss:String)
+getAddresss():String
+showData():void
extends
Student
- grade : char
+setGrade(score:double)
+getGrade():char
+ showData():void
คลาสแม่
super class
คลาสลูก
sub class
Student
- name : String
+ age : int
# address :String
- grade :char
+ setName(n:String)
+ getName(): String
+setAge(age:int)
+getAge():int
+setAddress(a:String)
+getAddresss():String
+setGrade(score:double)
+getGrade():char
+showData():void
People
- name : String
+ age : int
# address :String
+ setName(n:String)
+ getName(): String
+setAge(age:int)
+getAge():int
+setAddress(address:String)
+getAddresss():String
+showData():void
People
extends
Student
- grade : char
+setGrade(score:double)
+getGrade():char
+ showData():void
สร้าง class “Test_Student”
ขึ้นใหม่เพื่อทดลองเรี ยกใช้ Class Student
People
extends
name is Peter
age is 22
address is Roi ed City
grade is D
Student
- grade : char
+setGrade(score:double)
+getGrade():char
+ showData():void
การห้ามสื บทอด class (final class)

ถ้าเราไม่ตอ้ งการให้มี class ใดมาสื บทอดคลาสนี้ได้ สามารถกาหนด
keyword final ประกอบกับการประกาศ class
ตัวอย่าง
1.สร้าง class “A” กาหนด final ประกอบกับการประกาศ class
2. สร้าง class “B” เพื่อทดสอบ extends
การปกป้ องไม่ให้ override method (final method)

ถ้าเราไม่ตอ้ งการให้มี class ที่สืบทอด override เมธอดใดเรา สามารถ
กาหนด keyword final ประกอบกับการประกาศ method
ตัวอย่าง
1.สร้าง class “A” ดังนี้
2. สร้าง class “B” extends “A” แล้วทดสอบ override getID()
ตัวอย่าง กฎของการถ่ายทอด
ตัวอย่าง กฎของการถ่ายทอด และการ Overriding
สรุ ป
1.
2.
3.
4.
5.
การสื บทอดในแนวคิดของ OOP ใช้แนวความคิดเดียวกับการ
ถ่ายทอดคุณลักษณะจากพ่อและแม่
การสื บทอดทาให้เกิดการนาไปใช้ใหม่ได้ (Reusable)
เมธอดที่ใช้กบั class แม่ได้ ก็สามารถใช้กบั class ลูกได้
class ลูกสามารถ override เมธอดใน class แม่ได้
ถ้ ำ class ลูกอยู่ต่ำง package กับ class แม่ , class ลูกสำมำรถ
เรียกใช้ เมธอดของ class แม่ ได้ ในกรณีที่ methodกำหนดกำรเข้ ำ
ใช้ ระดับ public หรือ protected
final
ั class ?
กาหนดให้กบ
ั attribute ?
กาหนดให้กบ
ั method ?
กาหนดให้กบ
การบ้าน
ให้นกั ศึกษา เขียนโปรแกรม โดยใช้
ทฤษฎี กฎของการถ่ายทอด(Inheritance)
และการ override เมธอด (overriding)