lec03 :: หลักการเชิงออปเจ็ค (object oriented concept)

38
Lec03 :: หหหหหหหหหหหหหหหหหห (Object Oriented Concept) หหหห หหหหหหหหหหหหหหหหหหหหหหหห หหหห หหหหหหหหหหหหหหหหหหหหหหหห หหห ห หหห ห . . หหหหหหห หหหหหหหห หหหหหหห หหหหหหหห http://www.siam2dev.com [email protected]

Upload: dasan

Post on 14-Jan-2016

46 views

Category:

Documents


2 download

DESCRIPTION

Lec03 :: หลักการเชิงออปเจ็ค (Object Oriented Concept). วิชา การเขียนโปรแกรมเชิงวัตถุ โดย อ. นัฐพงศ์ ส่งเนียม http://www.siam2dev.com [email protected]. วัตถุประสงค์. แนะนำออปเจ็คและคลาส อธิบายคุณลักษณะและเมธอด อธิบายการเขียนโปรแกรมเชิงออปเจ็คโดยใช้ภาษาจาวา - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Lec03 ::  หลักการเชิงออปเจ็ค (Object Oriented Concept)

Lec03 :: หลั�กการเชิงออปเจ็�ค(Object Oriented Concept)

วิชิา การเขี�ยนโปรแกรมเชิงวิ�ตถุ�วิชิา การเขี�ยนโปรแกรมเชิงวิ�ตถุ�โดย อโดย อ . . น�ฐพงศ์ ส่"งเน�ยมน�ฐพงศ์ ส่"งเน�ยมhttp://[email protected]

Page 2: Lec03 ::  หลักการเชิงออปเจ็ค (Object Oriented Concept)

วิ�ตถุ�ประส่งค แนะน��ออปเจ็คและคล�ส อธิ�บ�ยค�ณล�กษณะและเมธิอด อธิ�บ�ยก�รเขี�ยนโปรแกรมเชิ�งออปเจ็คโดยใชิ ภ�ษ�

จ็�ว� แนะน��ก�รเขี�ยนโปรแกรมโดยใชิ ค�ณล�กษณะเด#นขีอง

โปรแกรมเชิ�งออปเจ็ค แนะน�� Unified Modelling Language

Page 3: Lec03 ::  หลักการเชิงออปเจ็ค (Object Oriented Concept)

หลั�กการเชิงออปเจ็�ค ภ�ษ�จ็�ว�เป%นภ�ษ�คอมพิ�วเตอร(ที่�*ใชิ หล�กก�รเชิ�งออป

เจ็ค OOP (Object Oriented Programming) OOP เป%นขีบวนก�รก�รพิ�ฒน�โปรแกรมโดยก�ร

จ็��ลองป-ญห�ว#�ประกอบไปด วยออปเจ็คใดบ �ง น�ย�มที่�*ส��ค�ญค0อ - ออปเจ็ค (object)

- คล�ส (class)

Page 4: Lec03 ::  หลักการเชิงออปเจ็ค (Object Oriented Concept)

ออปเจ็�ค ออปเจ็คค0อส�*งต#�ง ๆ ที่�*ม�อย3#ในชิ�ว�ตประจ็��ว�น

- ออปเจ็คที่�*เป%นร3ปธิรรมเชิ#น น�กศึ5กษ� ใบลงที่ะเบ�ยน ป�กก� และรถ- ออปเจ็คที่�*เป%นน�มธิรรมเชิ#น คะแนน ร�ยชิ0*อว�ชิ� บ�ญชิ�เง�นฝ�ก และต�ร�งเที่�*ยวบ�น

ออปเจ็คประกอบด วย- ค�ณล�กษณะ (attribute) หร0อขี อม3ล (data)- พิฤต�กรรม (behavior) หร0อ (method)

Page 5: Lec03 ::  หลักการเชิงออปเจ็ค (Object Oriented Concept)

ออปเจ็�ค ค�ณล�กษณะ

- ขี อม3ลขีองออปเจ็ค- แต#ละออปเจ็คอ�จ็ม�ค#�ขีองค�ณล�กษณะที่�*ต#�งก�น

เมธิอด- ส�*งที่�*ออปเจ็คส�ม�รถกระที่��ได - ค��ส�*งในก�รที่��ง�นขีองโปรแกรมเชิ�งออปเจ็ค- โปรแกรมจ็ะจ็�ดก�รก�บขี อม3ลโดยเร�ยกใชิ เมธิอด

Page 6: Lec03 ::  หลักการเชิงออปเจ็ค (Object Oriented Concept)

ต�วิอย"างขีองออปเจ็�ค น�กศึ5กษ�

- อ�จ็จ็ะม�ค�ณล�กษณะเชิ#น รห�ส ชิ0*อ และเกรดเฉล�*ย- อ�จ็จ็ะม�เมธิอดเชิ#น ลงที่ะเบ�ยน สอบ และเด�น

รถยนต(- อ�จ็จ็ะม�ค�ณล�กษณะเชิ#น ย�*ห อ ร� #น และส�- อ�จ็จ็ะม�เมธิอดเชิ#น เคล0*อนที่�* หย�ด และเล�:ยว

ส�น�ขี- อ�จ็จ็ะม�ค�ณล�กษณะเชิ#น ชิ0*อ พิ�นธิ( และส�- อ�จ็จ็ะม�เมธิอดเชิ#น เห#� คล�น และกระด�กห�ง

Page 7: Lec03 ::  หลักการเชิงออปเจ็ค (Object Oriented Concept)

ต�วิอย"างขีองโปรแกรมเชิงออปเจ็�ค โปรแกรมระบบจ็�ดก�รบ�ญชิ�เง�นฝ�กขีองธิน�ค�ร ต�วอย#�งขีองออปเจ็ค

- Account- Customer- Transaction- ATM

Account- อ�จ็ม�ค�ณล�กษณะเชิ#น เลขีที่�*บ�ญชิ� ชิ0*อเจ็ �ขีองบ�ญชิ� ว�นที่�*เป;ดบ�ญชิ� และยอดเง�นคงเหล0อ- อ�จ็ม�เมธิอดเชิ#น ฝ�ก ถอน และโอนเง�น

Page 8: Lec03 ::  หลักการเชิงออปเจ็ค (Object Oriented Concept)

คลัาส่ เปร�ยบเสม0อนพิ�มพิ(เขี�ยวขีองออปเจ็ค ออปเจ็คจ็ะถ3กสร �งม�จ็�กคล�ส บ�งคร�:งเร�ยกว#�เป%น

instance ขีองคล�ส คล�สหน5*งคล�สส�ม�รถสร �งออปเจ็คได หล�ยออป

เจ็ค อ�ที่�เชิ#น คล�สชิ0*อ Student อ�จ็สร �งออปเจ็คชิ0*อ s1, s2 หร0อ s3 ซึ่5*งเป%นออปเจ็คชิน�ด Student

Page 9: Lec03 ::  หลักการเชิงออปเจ็ค (Object Oriented Concept)

ร$ปแส่ดงการส่ร%างออปเจ็�คจ็ากคลัาส่ Student

Page 10: Lec03 ::  หลักการเชิงออปเจ็ค (Object Oriented Concept)

ค�ณลั�กษณะขีองออปเจ็�ค ขี อม3ลที่�*เกบอย3#ในออปเจ็ค แบ#งเป%นต�วแปร (variable) และค#�คงที่�*

(constant)- ต�วแปรค0อค�ณล�กษณะที่�*ส�ม�รถเปล�*ยนค#�ได - ค#�คงที่�*ค0อค�ณล�กษณะที่�*ไม#ส�ม�รถเปล�*ยนค#�ได

Page 11: Lec03 ::  หลักการเชิงออปเจ็ค (Object Oriented Concept)

ต�วิอย"างค�ณลั�กษณะขีองออปเจ็�ค

Page 12: Lec03 ::  หลักการเชิงออปเจ็ค (Object Oriented Concept)

ค�ณลั�กษณะขีองคลัาส่ เป%นค�ณล�กษณะที่�*ใชิ ร#วมก�นขีองที่�กออปเจ็ค ที่�กออปเจ็คจ็ะใชิ ค�ณล�กษณะร#วมก�นที่��ให ประหย�ด

พิ0:นที่�*ในหน#วยคว�มจ็�� ต�วอย#�งเชิ#น ค�ณล�กษณะที่�*ก��หนดให เป%นค#�คงที่�*ชิ0*อ

MIN_GPA

Page 13: Lec03 ::  หลักการเชิงออปเจ็ค (Object Oriented Concept)

ต�วิอย"างค�ณลั�กษณะขีองคลัาส่

Page 14: Lec03 ::  หลักการเชิงออปเจ็ค (Object Oriented Concept)

เมธอด ว�ธิ�ก�รหร0อก�รกระที่��ที่�*น�ย�มอย3#ในคล�สหร0อออปเจ็ค

เพิ0*อใชิ ในก�รจ็�ดก�รก�บค�ณล�กษณะขีองออปเจ็ค เปร�ยบเที่�ยบได ก�บ function, procedure หร0อ

subroutine ขีองโปรแกรมเชิ�งกระบวนก�ร ต�วอย#�งเชิ#น เมธิอด deposit () เพิ0*อเป%นเมธิอด

ส��หร�บฝ�กเง�น

Page 15: Lec03 ::  หลักการเชิงออปเจ็ค (Object Oriented Concept)

การส่)*อส่ารระหวิ"างออปเจ็�ค ก�รส0*อส�รระหว#�งก�นขีองออปเจ็คที่��ได โดยก�รผ่#�น

ขี#�วส�ร (message)ObjB ค0อชิ0*อออปเจ็คmethod4 ค0อชิ0*อเมธิอด

1 2( , ) ค0อ argument

Page 16: Lec03 ::  หลักการเชิงออปเจ็ค (Object Oriented Concept)

การส่)*อส่ารระหวิ"างออปเจ็�ค ขี#�วส�รจ็ะส#งผ่#�นจ็�กออปเจ็ค objA ที่�*เป%นผ่3 ส#ง

(sender) เพิ0*อเร�ยกก�รที่��ง�นขีองเมธิอดที่�*ชิ0*อ method4 จ็�กออปเจ็ค objB ที่�*เป%นผ่3 ร �บ (receiver)

ObjB อ�จ็ส#งค#� (return value) บ�งค#�กล�บม�ย�ง objA

Page 17: Lec03 ::  หลักการเชิงออปเจ็ค (Object Oriented Concept)

การเขี�ยนโปรแกรมเชิงออปเจ็�คโดยใชิ%ภาษาจ็าวิา ก�รประก�ศึคล�ส ก�รประก�ศึค�ณล�กษณะ ก�รประก�ศึเมธิอด ก�รประก�ศึและสร �งออปเจ็ค ก�รเร�ยกใชิ สม�ชิ�กขีองออปเจ็ค

Page 18: Lec03 ::  หลักการเชิงออปเจ็ค (Object Oriented Concept)

การประกาศ์คลัาส่ โปรแกรมภ�ษ�จ็�ว�แต#ละโปรแกรมจ็ะประกอบไปด วยคล�ส

อย#�งน อยหน5*งคล�ส โดยม�ร3ปแบบก�รประก�ศึด�งน�:[modifier] class Classname {

[class member]}

- modifier ค0อค�ย(เว�ร(ด (keyword) ขีองภ�ษ�จ็�ว�ที่�*ใชิ ในก�รอธิ�บ�ยระด�บก�รเขี �ถ5ง (access modifier)- class ค0อค�ย(เว�ร(ดขีองภ�ษ�จ็�ว�เพิ0*อระบ�ว#�เป%นก�รประก�ศึคล�ส- Classname ค0อชิ0*อคล�ส- class member ค0อเมธิอดหร0อค�ณล�กษณะ

ต�วอย#�งpublic class Student {}

Page 19: Lec03 ::  หลักการเชิงออปเจ็ค (Object Oriented Concept)

การประกาศ์ค�ณลั�กษณะ ค�ณล�กษณะขีองออปเจ็คค0อต�วแปรหร0อค#�คงที่�*ซึ่5*งประก�ศึภ�ย

ในออปเจ็คโดยม�ร3ปแบบก�รประก�ศึด�งน�:[modifier] dataType attributeName;

- modifier ค0อค�ย(เว�ร(ดขีองภ�ษ�จ็�ว�ที่�*อธิ�บ�ยค�ณสมบ�ต�ต#�ง ๆ ขีองต�วแปรหร0อค#�คงที่�*- dataType ค0อชิน�ดขี อม3ลซึ่5*งอ�จ็เป%นชิน�ดขี อม3ลพิ0:นฐ�นหร0อชิน�ดคล�ส- attributeName ค0อชิ0*อขีองค�ณล�กษณะ

ต�วอย#�งpublic class Student {

public String id;public String name;public double gpa;

}

Page 20: Lec03 ::  หลักการเชิงออปเจ็ค (Object Oriented Concept)

การประกาศ์เมธอด ภ�ษ�ว�จ็�ก��หนดร3ปแบบขีองก�รประก�ศึเมธิอดที่�*อย3#ในคล�สไว

ด�งน�:[modifier] return_type methodName ( [argument]) {

[method_body]}

- modifier ค0อค�ย(เว�ร (ดขีองภ�ษ�จ็�ว�ที่�*ใชิ อธิ�บ�ยระด�บก�รเขี �ถ5ง- return_type ค0อชิน�ดขี อม3ลขีองค#�ที่�*จ็ะม�ก�รส#งกล�บ- methodName ค0อชิ0*อขีองเมธิอด- arguments ค0อ ต�วแปรที่�*ใชิ ในก�รร�บขี อม3ลที่�*ออปเจ็คส#งม�ให - method_body ค0อค��ส�*งต#�ง ๆ ขีองภ�ษ�จ็�ว�ที่�*อย3#ในเมธิอด

Page 21: Lec03 ::  หลักการเชิงออปเจ็ค (Object Oriented Concept)

ต�วิอย"างโปรแกรมpublic class Student {

public String id;public String name;public double gpa;

public static final double minGPA =2.00 ;public void setID(String ID) {

id = ID;}public void setName(String n) {

name = n;}

public void setGPA(double GPA) {gpa = GPA;

}public void showDetails() {

System.out.println(“ID: “+id);System.out.printlN(“Name: “+name);System.out.println(“GPA: “+gpa);

}}

Page 22: Lec03 ::  หลักการเชิงออปเจ็ค (Object Oriented Concept)

เมธอดที่�*ชิ)*อ main()

โปรแกรมจ็�ว�ประย�กต( (Java Application) จ็ะเร�*มต นก�รที่��ง�นในคล�สที่�*ม�เมธิอดที่�*ชิ0*อ main โดยม�ร3ปแบบขีองเมธิอดด�งน�:

public static void main (String args[]) {

[method_body]}

Page 23: Lec03 ::  หลักการเชิงออปเจ็ค (Object Oriented Concept)

การประกาศ์ออปเจ็�ค ออปเจ็คที่�กออปเจ็คในโปรแกรมภ�ษ�จ็�ว�จ็ะต องม�ค��ส�*ง

ประก�ศึเพิ0*อระบ�ว#�ออปเจ็คน�:นเป%นออปเจ็คขีองคล�สใด โดยม�ร3ปแบบก�รประก�ศึด�งน�:

[modifier] ClassName objectName;- modifier ค0อค�ย(เว�ร(ดที่�*อธิ�บ�ยค�ณสมบ�ต�ต#�ง ๆ ขีองออปเจ็ค- ClassName ค0อชิ0*อขีองคล�สส��หร�บออปเจ็คน�:น- objectName ค0อชิ0*อขีองออปเจ็ค

ต�วอย#�งStudent s1;

Page 24: Lec03 ::  หลักการเชิงออปเจ็ค (Object Oriented Concept)

การส่ร%างออปเจ็�ค ค��ส�*งที่�*ใชิ ในก�รสร �งออปเจ็คจ็ะม�ร3ปแบบด�งน�:

objectName = new ClassName ([argument]);

- objectName ค0อชิ0*อขีองออปเจ็ค- new ค0อค�ย(เว�ร(ดขีองภ�ษ�จ็�ว�เพิ0*อใชิ ในก�รสร �งออปเจ็ค- ClassName ค0อชิ0*อขีองคล�ส- arguments ค0อค#�ที่�*ต องก�รส#งผ่#�นในก�รเร�ยกเมธิอด

ต�วอย#�งs1 = new Student ();

Page 25: Lec03 ::  หลักการเชิงออปเจ็ค (Object Oriented Concept)

การประกาศ์แลัะส่ร%างออปเจ็�ค ค��ส�*งในก�รประก�ศึและสร �งออปเจ็คส�ม�รถที่�*จ็ะ

รวมเป%นค��ส�*งเด�ยวก�นโดยม�ร3ปแบบค��ส�*งด�งน�:[modifier] ClassName objectName =

new className ([argument]);

ต�วอย#�งStudent s1 = new Student () ;

Page 26: Lec03 ::  หลักการเชิงออปเจ็ค (Object Oriented Concept)

การเร�ยกใชิ%ส่มาชิกขีองออปเจ็�ค ก�รเร�ยกใชิ ค�ณล�กษณะขีองออปเจ็คม�ร3ปแบบด�งน�:

objectName.attributeName; ก�รเร�ยกใชิ เมธิอดขีองออปเจ็คม�ร3ปแบบด�งน�:

objectName.methodName ([arguments]);- objectName ค0อชิ0*อขีองออปเจ็คที่�*สร �งขี5:น- methodName ค0อชิ0*อขีองเมธิอดขีองออปเจ็คน�:น- arguments ค0อ ค#�ที่�*ต องก�รส#งผ่#�นไปให ก�บเมธิอดขีองออปเจ็คน�:น

ต�วอย#�งs1.setName(“Thana”);

Page 27: Lec03 ::  หลักการเชิงออปเจ็ค (Object Oriented Concept)

ต�วิอย"างโปรแกรมpublic class Sample {

public static void main (String args[]) {Student s1 = new Student ();Student s2 = new Student ();Student s3 = new Student ();s1.setID (“1234”);s1.setName (“Thana”);s1.setGPA(3.25);s1.showDetails();s2.setID (“1122”);s2.setName (“Somchai”);s2.setGPA(2.90);s2.showDetails();s3.setID (“2211”);s3.setName (“Somsri”);s3.setGPA(3.00);s3.showDetails();

}}

Page 28: Lec03 ::  หลักการเชิงออปเจ็ค (Object Oriented Concept)

ค�ณลั�กษณะเด"นขีองโปรแกรมเชิงออปเจ็�ค ก�รห#อห� ม ก�รส0บที่อด ก�รม�ได หล�ยร3ปแบบ

Page 29: Lec03 ::  หลักการเชิงออปเจ็ค (Object Oriented Concept)

การห"อห�%ม หม�ยถ5งก�รจ็ะเร�ยกใชิ ค�ณล�กษณะขีองออปเจ็คจ็ะ

ที่��ได โดยก�รเร�ยกผ่#�นเมธิอดเที่#�น�:น หล�กก�รขีองก�รห#อห� มค0อก�รก��หนดให ค�ณล�กษณะ

ขีองออปเจ็คม�ค�ณสมบ�ต�เป%น private และก��หนดให เมธิอดม�ค�ณสมบ�ต�เป%น public

Page 30: Lec03 ::  หลักการเชิงออปเจ็ค (Object Oriented Concept)

ต�วิอย"างโปรแกรมpublic class Student {

private String id;private String name;private double gpa;

public static final double minGPA =2.00 ;public void setID(String ID) {

id = ID;}public void setName(String n) {

name = n;}public void setGPA(double GPA) {

gpa = GPA;}public void showDetails() {

System.out.printIn(“ID: “+id);System.out.printIn(“Name: “+name);System.out.printIn(“GPA: “+gpa);

}}

Page 31: Lec03 ::  หลักการเชิงออปเจ็ค (Object Oriented Concept)

การส่)บที่อด หม�ยถ5งก�รน�ย�มคล�สใหม#จ็�กร3ปแบบขีองคล�สที่�*ม�

อย3#แล ว โดยคล�สใหม#จ็ะน��ค�ณล�กษณะและเมธิอดขีองคล�สเด�มม�ใชิ ได

โดยในภ�ษ�จ็�ว�จ็ะใชิ ค�ย(เว�ร(ด extends เพิ0*อระบ�ก�รส0บที่อด

ต�วอย#�ง

Page 32: Lec03 ::  หลักการเชิงออปเจ็ค (Object Oriented Concept)

ต�วิอย"างโปรแกรมpublic class PartTimeStudent extends Student {}public class FullTimeStudent extends Student {}public class GradStudent extends Student {

private String thesisTitle;private String supervisor;public void setThesisTitle (String t) {

thesisTitle = t;}public void setSupervisor (String s) {

supervisor = s;}

}public class PhDStudent extends GradStudent {

public boolean passQualify;public boolean isPassQualify() {

return passQualify;}

}

Page 33: Lec03 ::  หลักการเชิงออปเจ็ค (Object Oriented Concept)

การม�ได%หลัายร$ปแบบ หม�ยถ5งก�รที่�*ส�ม�รถตอบสนองต#อขี#�วส�ร

(เมธิอด ) เด�ยวก�นด วยว�ธิ�ก�รที่�*ต#�งก�น และส�ม�รถก��หนดออปเจ็คได หล�ยร3ปแบบ

ต�วอย#�ง

Page 34: Lec03 ::  หลักการเชิงออปเจ็ค (Object Oriented Concept)

ต�วิอย"างโปรแกรม

public class Ball {public void throw () {}

}public class SoccerBall extends Ball {

public void throw() {System.out.printIn(“Throwing soccerball”);

}}public class TennisBall extends Ball {

public void throw () {System.out.printIn(“Throwing tennisball”);

}}public class TestBall {

public static void main (String args[]) {Ball b1 = new Ball ();SoccerBall b2 = new SoccerBall();Ball b3 = new SoccerBall();

}}

Page 35: Lec03 ::  หลักการเชิงออปเจ็ค (Object Oriented Concept)

ส่ร�ปเน)0อหาขีองบที่ ออปเจ็คต#�ง ๆ จ็ะประกอบไปด วยค�ณล�กษณะและเมธิอด ออปเจ็คหล�ยออปเจ็คส�ม�รถถ3กสร �งจ็�กคล�สหน5*งคล�สได ค�ณล�กษณะแบ#งออกเป%นสองประเภที่ค0อ

- ค�ณล�กษณะขีองออปเจ็ค ค0อขี อม3ลที่�*เกบอย3#ในแต#ละออปเจ็ค- ค�ณล�กษณะขีองคล�ส ค0อค�ณล�กษณะที่�*ใชิ ร#วมก�นขีองที่�กออปเจ็ค

เมธิอดค0อว�ธิ�ก�รเพิ0*อใชิ ในก�รจ็�ดก�รก�บค�ณล�กษณะขีอง ออปเจ็คหร0อค�ณล�กษณะขีองคล�ส

Page 36: Lec03 ::  หลักการเชิงออปเจ็ค (Object Oriented Concept)

ส่ร�ปเน)0อหาขีองบที่

ก�รเขี�ยนโปรแกรมเชิ�งออปเจ็คโดยใชิ ภ�ษ�จ็�ว�ม�ร3ปแบบต#�ง ๆ ด�งน�:- ก�รประก�ศึคล�ส

[modifier] class Classname {[class member]

}- ก�รประก�ศึค�ณล�กษณะ

[modifier] dataType attributeName;- ก�รประก�ศึเมธิอด

[modifier] return_type methodName ([arguments]) {

[method_body]}

Page 37: Lec03 ::  หลักการเชิงออปเจ็ค (Object Oriented Concept)

ส่ร�ปเน)0อหาขีองบที่ ก�รเขี�ยนโปรแกรมเชิ�งออปเจ็คโดยใชิ ภ�ษ�จ็�ว�ม�ร3ปแบบต#�ง

ๆ ด�งน�: (ต#อ)- ก�รประก�ศึออปเจ็ค

[modifier] ClassName objectName;- ก�รสร �งออปเจ็ค

objectName = new ClassName ([arguments]);- ก�รเร�ยกใชิ ค�ณล�กษณะขีองออปเจ็ค

objectName.attributeName;- ก�รเร�ยกใชิ เมธิอดขีองออปเจ็ค

objectName.methodName ([arguments]);

Page 38: Lec03 ::  หลักการเชิงออปเจ็ค (Object Oriented Concept)

ส่ร�ปเน)0อหาขีองบที่ ค�ณล�กษณะเด#นขีองโปรแกรมเชิ�งออปเจ็ค

- ก�รห#อห� ม ค0อก�รที่�*ให ค�ณล�กษณะถ3กห#อห� มอย3#ภ�ยในเมธิอดโดยก��หนดให ค�ณล�กษณะม� access modifier เป%น private และก��หนดให เมธิอดม� access modifier เป%น public- ก�รส0บที่อด ค0อก�รที่�*คล�สใหม#ส�ม�รถน��เอ�ค�ณล�กษณะและเมธิอดขีองคล�สที่�*ออกแบบไว แล วม�ใชิ ได โดยใชิ ค�ย(เว�ร(ด extends ระบ�ก�รส0บที่อด- ก�รม�ได หล�ยร3ปแบบ ค0อก�รที่�*ส�ม�รถตอบสนองต#อเมธิอดเด�ยวก�นด วยว�ธิ�ก�รที่�*ต#�งก�นได และส�ม�รถก��หนดออปเจ็คได หล�ยร3ปแบบ