Overload Method and Poly Morphism chapter06
Method Overloading method overloading means using the same name with different parameters.
Three types of method overloading
The following code won’t compile
Constructor overloading
JVM compiles overloaded methods
Widening
Autoboxing Unboxing
การเข้าถึงสมาชิก (member access modifiers) publicหมายถึงสมาชิกนั้นสามารถเข้าถึงได้จากคำสั่งที่ภายในทุกแห่งในคลาสนั้นหรือจากเมธอดนอกคลาสนั้น private หมายถึงสมาชิกนั้นสามารถเข้าถึงได้จากสมาชิกที่อยู่เฉพาะในคลาสนั้น protected เป็นการเข้าถึงสมาชิกที่มีการสืบทอดคุณสมบัติซึ่งจะกล่าวในบทหลัง ถ้าไม่มีการระบุการเข้าถึง จาวาจะกำหนดเป็น public โดยปริยายแล้ว การระบุการเข้าถึงต้องอยู่หน้าชนิดของข้อมูล
ตัวอย่าง
การใช้ private และ public
ex
output
การส่งผ่านออบเจ็กต์ให้เมธอด (pass object to method)
การผ่านพารามิเตอร์ให้เมธอด
การ return ออบเจ็กต์
Method Overloading เป็นความสามารถของจาวาที่สนับสนุนแนวคิด polymorphism โดยอนุญาตให้เมธอดในคลาสใดๆสามารถมีชื่อเหมือนกันทำงานต่างกัน และต่างกันที่การประกาศจำนวนพารามิเตอร์ไม่เท่ากันหรือถ้าจำนวนพารามิเตอร์เท่ากันต้องประกาศชนิดข้อมูลของพารามิเตอร์ไม่เหมือนกัน (ชื่อเมธอดเหมือนกันรายการพารามิเตอร์เหมือนกันต่างกันเพียง ชนิดค่าส่งกลับ (return types) ไม่ถือว่าเป็นการโอเวอร์โหลดเมธอด)
output
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) บางอย่างที่คลาสห่อหุ้มต้องการ
ใน ต.ย นี้ Showbits class จะไม่รู้จักถ้าอยู่ภายนอก main() ถ้ามีการถูกเรียกจากเมธอดอื่นภายนอก main() จะเกิดข้อผิดพลาด
Varargs: Variable-Length Arguments เพื่อช่วยแก้ปัญหากรณีที่จำนวนค่าของพารามิเตอร์ไม่แน่นอน
Overloading Varargs Methods
กรณีกำกวมของ Varargs