chapter 7...

10
08/03/60 1 Chapter 7 ความรู้เพิ่มเติมเกี่ยวกับเมธอดและคลาส More Methods and Classes เนื้อหา การควบการเข้าถึงสมาชิกคลาส การส่งค่าออบเจ็กต์ให้เมธอด การคืนค่าออบเจ็กต์จากเมธอด โอเวอร์โหลดเมธอด โอเวอร์โหลดคอนสตรัคเตอร์ การเวียนกลับ การใช้ static การใช้ inner classes การใช้ varargs การเข้าถึงสมาชิกคลาส (class member accessing) จาวามีวัตถุประสงค์หลักที่เน้นการรักษาข้อมูลและเมธอดที่รวม เรียกว่าสมาชิกคลาสโดยการห่อหุ้ม (encapsulation) โดยเฉพาะการห่อหุ้มข้อมูลแล้วให้เข้าถึงผ่านเมธอด แต่ทั้งนี้จาวายัง เปิดช่องให้มีการเข้าถึงสมาชิกของคลาสได้ในกรณีที่ไม่ต้องการความ ปลอดภัยที่อาศัยการห่อหุ้ม เบื้องต้นจาวาจะมีการระบุการเข้าถึงสมาชิกได้ 2 แบบคือ private หมายถึงสมาชิกนั้นสามารถเข้าถึงได้จากคาสั่งที่อยู่ใน เมธอดที่อยู่เฉพาะในคลาสนั้น public หมายถึงสมาชิกนั้นสามารถเข้าถึงได้จากคาสั่งที่อยูภายนอกคลาสนั้น จาวามักใช้ private กับสมาชิกที่เป็นข้อมูล แล้วให้คาสั่งที่อยูภายนอกอ่านหรือเขียนข้อมูลนั้นผ่านเมธอด ซึ่งคาสั่งที่อยู่ภายนอกจะ ได้รับเฉพาะข้อมูลหรือการทางานตามที่เมธอดของคลาสนั้นดดยไม่ ทราบรายละเอียดการทางานที่แท้จริงของเมธอดซึ่งเปรียบเสมือนกล่อง ดา (black box)ที่เราสามารถล้วงข้อมูลหรือใส่ข้อมูลได้โดยไม่รู้การ ทางานของเมธอดนั้นเห็น การเข้าถึงสมาชิก (member access modifiers) publicหมายถึงสมาชิกนั้นสามารถเข้าถึงได้จากคาสั่งที่ภายในทุก แห่งในคลาสนั้นหรือจากเมธอดนอกคลาสนั้น private หมายถึงสมาชิกนั้นสามารถเข้าถึงได้จากสมาชิกที่อยู่เฉพาะ ในคลาสนั้น protected เป็นการเข้าถึงสมาชิกที่มีการสืบทอดคุณสมบัติซึ่งจะ กล่าวในบทหลัง ถ้าไม่มีการระบุการเข้าถึง จาวาจะกาหนดเป็น public โดยปริยาย แล้ว การระบุการเข้าถึงต้องอยู่หน้าชนิดของข้อมูล ตัวอย่าง

Upload: others

Post on 05-Jul-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Chapter 7 ความรู้เพิ่มเติมเกี่ยวกับเมธอดและคลาส More ...pirun.ku.ac.th/~faastwc/sem2-2559/JAVA/pttx/chapter7.pdf ·

08/03/60

1

Chapter 7ความรเพมเตมเกยวกบเมธอดและคลาส

More Methods and Classes

เนอหา● การควบการเขาถงสมาชกคลาส ● การสงคาออบเจกตใหเมธอด ● การคนคาออบเจกตจากเมธอด● โอเวอรโหลดเมธอด● โอเวอรโหลดคอนสตรคเตอร ● การเวยนกลบ● การใช static● การใช inner classes● การใช varargs

การเขาถงสมาชกคลาส (class member accessing)

• จาวามวตถประสงคหลกทเนนการรกษาขอมลและเมธอดทรวมเรยกวาสมาชกคลาสโดยการหอหม (encapsulation) โดยเฉพาะการหอหมขอมลแลวใหเขาถงผานเมธอด แตทงนจาวายงเปดชองใหมการเขาถงสมาชกของคลาสไดในกรณทไมตองการความปลอดภยทอาศยการหอหม

• เบองตนจาวาจะมการระบการเขาถงสมาชกได 2 แบบคอ–private หมายถงสมาชกนนสามารถเขาถงไดจากค าสงทอยในเมธอดทอยเฉพาะในคลาสนน

–public หมายถงสมาชกนนสามารถเขาถงไดจากค าสงทอยภายนอกคลาสนน

• จาวามกใช private กบสมาชกทเปนขอมล แลวใหค าสงทอยภายนอกอานหรอเขยนขอมลนนผานเมธอด ซงค าสงทอยภายนอกจะไดรบเฉพาะขอมลหรอการท างานตามทเมธอดของคลาสนนดดยไมทราบรายละเอยดการท างานทแทจรงของเมธอดซงเปรยบเสมอนกลองด า (black box)ทเราสามารถลวงขอมลหรอใสขอมลไดโดยไมรการท างานของเมธอดนนเหน

การเขาถงสมาชก (member access modifiers)

• publicหมายถงสมาชกนนสามารถเขาถงไดจากค าสงทภายในทกแหงในคลาสนนหรอจากเมธอดนอกคลาสนน

• private หมายถงสมาชกนนสามารถเขาถงไดจากสมาชกทอยเฉพาะในคลาสนน

• protected เปนการเขาถงสมาชกทมการสบทอดคณสมบตซงจะกลาวในบทหลง

• ถาไมมการระบการเขาถง จาวาจะก าหนดเปน public โดยปรยายแลว

• การระบการเขาถงตองอยหนาชนดของขอมล

ตวอยาง

Page 2: Chapter 7 ความรู้เพิ่มเติมเกี่ยวกับเมธอดและคลาส More ...pirun.ku.ac.th/~faastwc/sem2-2559/JAVA/pttx/chapter7.pdf ·

08/03/60

2

การใช private และ public

ex

output

Page 3: Chapter 7 ความรู้เพิ่มเติมเกี่ยวกับเมธอดและคลาส More ...pirun.ku.ac.th/~faastwc/sem2-2559/JAVA/pttx/chapter7.pdf ·

08/03/60

3

การสงผานออบเจกตใหเมธอด (pass object to method)

การผานพารามเตอรใหเมธอด

การ return ออบเจกต

Page 4: Chapter 7 ความรู้เพิ่มเติมเกี่ยวกับเมธอดและคลาส More ...pirun.ku.ac.th/~faastwc/sem2-2559/JAVA/pttx/chapter7.pdf ·

08/03/60

4

Method Overloading

• เปนความสามารถของจาวาทสนบสนนแนวคด polymorphism โดยอนญาตใหเมธอดในคลาสใดๆสามารถมชอเหมอนกนท างานตางกน และตางกนทการประกาศจ านวนพารามเตอรไมเทากนหรอถาจ านวนพารามเตอรเทากนตองประกาศชนดขอมลของพารามเตอรไมเหมอนกน (ชอเมธอดเหมอนกนรายการพารามเตอรเหมอนกนตางกนเพยง ชนดคาสงกลบ (return types) ไมถอวาเปนการโอเวอรโหลดเมธอด)

output

Page 5: Chapter 7 ความรู้เพิ่มเติมเกี่ยวกับเมธอดและคลาส More ...pirun.ku.ac.th/~faastwc/sem2-2559/JAVA/pttx/chapter7.pdf ·

08/03/60

5

โอเวอรโหลดคอนสตรคเตอรOverloading Constructors

• คอนสตรคเตอรสามารถท าโอเวอรโหลดไดเชนเดยวกบเมธอดทวไป เพอการสรางออบเจกตตรงวตถประสงคมากทสด

Page 6: Chapter 7 ความรู้เพิ่มเติมเกี่ยวกับเมธอดและคลาส More ...pirun.ku.ac.th/~faastwc/sem2-2559/JAVA/pttx/chapter7.pdf ·

08/03/60

6

การเรยกซา (Recursion )• การทเมธอดเรยกใชตวเองเราจะเรยกวา การเรยกซ า

Page 7: Chapter 7 ความรู้เพิ่มเติมเกี่ยวกับเมธอดและคลาส More ...pirun.ku.ac.th/~faastwc/sem2-2559/JAVA/pttx/chapter7.pdf ·

08/03/60

7

การใชคาสาคญ static• ปกตแลวเราจะเขาถงสมาชกของคลาสขณะทอยในสถานะออบเจกต แตอาจ

มบางครงทเราตองการเขาถงสมาชกเหลานนโดยอสสระจากสถานะออบเจกตหรอไมเขาถงโดยไมตองผานตวแปรคลาสทชไปยงออบเจกตนน

• จาวาไดเตรยมค าส าคญ static ไวเพอการน ท าใหสมาชกใดๆของคลาสสามารถเขาถงไดโดยไมสรางออบเจกตขนกอน เชน การประกาศเมธอด main() ใหเปน static เพราะตองถกเรยกเปนจดเรมตนท างาน

• ในการเรยกใชสมาชกทเปน static ใหขนตนดวยชอคลาสตามดวย ดอท แลวตามดวยชอสมาชกทประกาศเปน static เชน ถาตองการก านดคาของ count ทประกาศเปน static ของคลาส Time ใหมคาเทากบ 10

Time.count = 10 ;

output

ขอจากดของการใช static method

• static method จะสามารถเรยกเมธอดอน ทเปน static เทานน• static method จะสามารถเขาถง data (class variable) ท

เปน static เทานน• ไมสามารถใช this กบสมาชกทเปน static

Page 8: Chapter 7 ความรู้เพิ่มเติมเกี่ยวกับเมธอดและคลาส More ...pirun.ku.ac.th/~faastwc/sem2-2559/JAVA/pttx/chapter7.pdf ·

08/03/60

8

Static Blocks

• ในบางครงคลาสตองการการก าหนดคาเรมตน (initialization) บางสงกอนทจะมการสรางออบเจกต เชน การขอตดตอไปยง server หรอการก าหนดคาเรมตนใหกบ static variable กอนท static method จะเรยกใช static variable เหลานน

• จาวาไดเตรยมการ static block เพอสงเหลานน

• static block จะถกเรยกท างานเปนอนดบเมอคลาสถกโหลดกอนทคลาสนนจะถกเรยกใหท างานอยางอน

Nested และInner Classes

• nested class หมายถงคลาสทประกาศอยภายในของคลาสอน

• สามารถสรางได 2 วธคอ แบบทตองใช static น าหนา และแบบทไมตองใช static น าหนา

• เบองตนเราจะพจารณาการใชงานในแบบทไมตองใช static น าหนา ซงเราจะเรยกวา inner class

• inner class จะสามารถเขาถงสมาชกใดๆ ของคลาสทหอหม (ชนนอก – outer class)ไดโดยตรง เหมอนกบสมาชกทไมไดเปน static คลาสทหอหมท าได

• บางครง inner class ถกใชในการสรางบรการ (service) บางอยางทคลาสหอหมตองการ

Page 9: Chapter 7 ความรู้เพิ่มเติมเกี่ยวกับเมธอดและคลาส More ...pirun.ku.ac.th/~faastwc/sem2-2559/JAVA/pttx/chapter7.pdf ·

08/03/60

9

ใน ต.ย น Showbits class จะไมรจกถาอยภายนอก main() ถามการถกเรยกจากเมธอดอนภายนอก main() จะเกดขอผดพลาด

Varargs: Variable-Length Arguments

• เพอชวยแกปญหากรณทจ านวนคาของพารามเตอรไมแนนอน

Overloading Varargs Methods

Page 10: Chapter 7 ความรู้เพิ่มเติมเกี่ยวกับเมธอดและคลาส More ...pirun.ku.ac.th/~faastwc/sem2-2559/JAVA/pttx/chapter7.pdf ·

08/03/60

10

กรณกากวมของ Varargs