chapter 7...
TRANSCRIPT
![Page 1: Chapter 7 ความรู้เพิ่มเติมเกี่ยวกับเมธอดและคลาส More ...pirun.ku.ac.th/~faastwc/sem2-2559/JAVA/pttx/chapter7.pdf ·](https://reader033.vdocuments.mx/reader033/viewer/2022042406/5f2068576888a61fa16af8df/html5/thumbnails/1.jpg)
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 ·](https://reader033.vdocuments.mx/reader033/viewer/2022042406/5f2068576888a61fa16af8df/html5/thumbnails/2.jpg)
08/03/60
2
การใช private และ public
ex
output
![Page 3: Chapter 7 ความรู้เพิ่มเติมเกี่ยวกับเมธอดและคลาส More ...pirun.ku.ac.th/~faastwc/sem2-2559/JAVA/pttx/chapter7.pdf ·](https://reader033.vdocuments.mx/reader033/viewer/2022042406/5f2068576888a61fa16af8df/html5/thumbnails/3.jpg)
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 ·](https://reader033.vdocuments.mx/reader033/viewer/2022042406/5f2068576888a61fa16af8df/html5/thumbnails/4.jpg)
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 ·](https://reader033.vdocuments.mx/reader033/viewer/2022042406/5f2068576888a61fa16af8df/html5/thumbnails/5.jpg)
08/03/60
5
โอเวอรโหลดคอนสตรคเตอรOverloading Constructors
• คอนสตรคเตอรสามารถท าโอเวอรโหลดไดเชนเดยวกบเมธอดทวไป เพอการสรางออบเจกตตรงวตถประสงคมากทสด
![Page 6: Chapter 7 ความรู้เพิ่มเติมเกี่ยวกับเมธอดและคลาส More ...pirun.ku.ac.th/~faastwc/sem2-2559/JAVA/pttx/chapter7.pdf ·](https://reader033.vdocuments.mx/reader033/viewer/2022042406/5f2068576888a61fa16af8df/html5/thumbnails/6.jpg)
08/03/60
6
การเรยกซา (Recursion )• การทเมธอดเรยกใชตวเองเราจะเรยกวา การเรยกซ า
![Page 7: Chapter 7 ความรู้เพิ่มเติมเกี่ยวกับเมธอดและคลาส More ...pirun.ku.ac.th/~faastwc/sem2-2559/JAVA/pttx/chapter7.pdf ·](https://reader033.vdocuments.mx/reader033/viewer/2022042406/5f2068576888a61fa16af8df/html5/thumbnails/7.jpg)
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 ·](https://reader033.vdocuments.mx/reader033/viewer/2022042406/5f2068576888a61fa16af8df/html5/thumbnails/8.jpg)
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 ·](https://reader033.vdocuments.mx/reader033/viewer/2022042406/5f2068576888a61fa16af8df/html5/thumbnails/9.jpg)
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 ·](https://reader033.vdocuments.mx/reader033/viewer/2022042406/5f2068576888a61fa16af8df/html5/thumbnails/10.jpg)
08/03/60
10
กรณกากวมของ Varargs