Untitled Document
สวัสดีครับ
บทความในตอนนี้ผมจะขอพูดเกี่ยวกับเรื่อง Method กันต่อนะครับ ซึ่งจะพูดถึงเรื่อง
Overloading Method
เรามาดูความหมายของ Overloading Method กันนะครับ
Overloading Method
หมายถึง Method ที่มีชื่อของ Method เป็นชื่อเดียวกัน แต่มี type ของ Method ต่างกัน
ซึ่งจะทำให้มีหน้าที่การทำงานแตกต่าง กันด้วย เราจะเรียกกรณีของ Method ที่เกิดขึ้นนี้ว่า
“Overloading Method” เรามาดูตัวอย่างกันเลยนะครับ
อธิบายโปรแกรม
โปรแกรมนี้จะเป็นโปรแกรมที่ใช้หาค่ามากสุดของตัวเลข 2 ตัว ซึ่งเป็นตัวอย่างจากบทความเก่านะครับ
น่าจะคุ้นตากันมาแล้วถ้าได้อ่านบทความเก่า แต่จะปรับให้สามารถหาค่าได้ 2 แบบ คือ
int และ double เราจะเห็น Method ชื่อ max อยู่ 2 Method นะครับ แต่ต่างกันตรงที่
Type หน้า Method และการรับพารามิเตอร์ของทั้งสองครับ เห็นไหมครับว่า Metohd แรกรับพารามิเตอร์แบบ
double แต่ Method ที่ 2 นั้นเป็น int ครับ ถ้าเป็นลักษณะแบบนี้เราจะเรียกว่าเป็น
“Overloading Method” การทำงานของ Method แบบนี้คือ จะทำงานตามประเภท ของพารามิเตอร์ที่ส่งให้มันครับ
เรามาดูทึ่ main กันครับจะเห็นว่ามีการเรียกใช้ Method
max 2 แบบด้วยกัน คือ
แบบแรก TM.max(3,4) นั้น Method ที่ถูกเรียกใช้งาน
คือ int max(int num1,int num2)
แบบที่สอง TM.max(4.7,5.9) นั้น Method ที่ถูกเรียกใช้งาน
คือ double max(double num1,double num2)
ลองมาดูอีกสักตัวอย่างครับ ตัวอย่างนี้จะเกิด Overloading
ที่ Constructor Method ครับ
อธิบายโปรแกรม
จากโปรแกรมนี้ภาพรวมของโปรแกรมคือ การหาพื้นที่ของวงกลม ให้สังเกตที่ Constructor
Method นะครับ มีอยู่ 2 แบบครับ แบบแรก Circle(double r) นั้นรับพารามิเตอร์เป็น
double ครับ คือ ค่าของรัศมีที่เป็นตัวเลขใดๆ ก็ได้ที่เราต้อง การหาพื้นที่ของวงกลม
ส่วนแบบที่สอง Circle( ) ไม่รับพารามิเตอร์ครับ คือ ถ้าเราไม่ส่งค่ารัศมีให้มันจะมาเซตค่าของรัศมีเป็น
1.0 ที่ Method นี้โดยอัตโนมัติ
ที่ main มีการสร้าง object ชื่อ c ขึ้นมา
ให้สังเกตว่ามีการส่งค่า 2.0 ไปให้ Constructor ซึ่งหมายความว่า Circle(double
r) จะทำงานจึงไปเซตค่า radius เป็น 2.0 แล้วคำนวณผลลัพธ์เป็นค่าพื้นที่ของวงกลมรัศมี
2.0 ออกมานั่นเอง ให้เราลองลบค่า 2.0 ในวงเล็บออกแล้วรันโปรแกรมดูนะครับว่าผลจะเป็นอย่างไร?
ข้อสรุป
ข้อสรุปสำหรับบทความนี้ก็คือ เราได้เรียนรู้ความหมายของ Overloading
Method ครับว่าเป็น Method ที่มีชื่อซ้ำกันแต่ พารามิเตอร์ต่างกันและมันจะทำงานตามหน้าที่ของมันเองครับไม่ก้าวก่ายกันขึ้นอยู่กับการเรียกใช้ของเราเอง
โดย Overloading Method นี้อาจจะเกิดที่ Constructor ก็ได้(อย่าลืมว่า Constructor
ก็คือ Method นั่นเองมันสามารถมีคุณสมบัติ Overloading ได้) และจากตัวอย่างที่ผมยกให้ดูจะมีแค่
2 Method ที่เป็น Overloading แต่จริงๆ แล้วจะมีกี่ Method ก็ได้นะครับขึ้นอยู่กับ
พารามิเตอร์ที่เราจะสร้างให้มันทำงาน
อธิบายมายืดยาวไม่รู้จะมีใครขี้เกียจอ่านกันหรือเปล่า?
นี่ก็เป็นอีกบทบาทหนึ่งของ Method นะครับในตอนต่อไปก็ยังวนเวียนอยู่ใน เรื่อง Method
นี่อีกครับ แต่จะเป็นเรื่องของการส่งพารามิเตอร์ว่ามีวิธีการส่งแบบไหนได้บ้าง ติดตามตอนต่ไปนะครับสวัสดีครับ....
|