ข้อดีและข้อเสียของวิธีการโอเวอร์โหลดใน Java

วิธีการโอเวอร์โหลดคือเมธอดในคลาสเดียวกันที่ใช้ชื่อเดียวกันแต่ยอมรับตัวแปรประเภทต่างๆ เป็นอาร์กิวเมนต์ ตัวอย่างเช่น คลาสอาจมีวิธีการ "เพิ่ม" ที่แตกต่างกันสองวิธี: วิธีหนึ่งที่ยอมรับค่าสองเท่าสองค่า "เพิ่ม (สองเท่า a, สองเท่า b)" และอีกวิธีหนึ่งที่ยอมรับสองค่า ค่าจำนวนเต็ม "เพิ่ม (int a, int b)" คอมพิวเตอร์จะตัดสินใจโดยอัตโนมัติว่าจะเรียกวิธีการใดในขณะทำงานตามประเภทตัวแปรที่ส่งไปยัง กระบวนการ.

ความยืดหยุ่น

วิธีการโอเวอร์โหลดทำให้โปรแกรมเมอร์มีความยืดหยุ่นในการเรียกวิธีการที่คล้ายกันสำหรับข้อมูลประเภทต่างๆ ตัวอย่างเช่น หากคุณกำลังทำงานในโปรแกรมคณิตศาสตร์ คุณสามารถใช้การโอเวอร์โหลดเพื่อสร้างคลาส "คูณ" หลายคลาส แต่ละรายการจะคูณจำนวนอาร์กิวเมนต์ที่แตกต่างกัน: "การคูณ (int a, int b)" ที่ง่ายที่สุดจะคูณสอง จำนวนเต็ม; วิธีที่ซับซ้อนกว่า "คูณ (double a, int b, int c)" คูณหนึ่งคู่ด้วยจำนวนเต็มสองจำนวน - คุณสามารถทำได้ เรียก "คูณ" กับชุดค่าผสมของตัวแปรที่คุณสร้างวิธีการโอเวอร์โหลดและรับผลลัพธ์ที่เหมาะสม

วีดีโอประจำวันนี้

ตัวสร้าง

การโอเวอร์โหลดยังใช้กับคอนสตรัคเตอร์เพื่อสร้างออบเจ็กต์ใหม่โดยให้ปริมาณข้อมูลต่างกัน ตัวอย่างเช่น คุณสามารถใช้การโอเวอร์โหลดเพื่อสร้างคอนสตรัคเตอร์ที่แตกต่างกันสามตัวสำหรับออบเจกต์ "บ้าน" ที่มีหมายเลขบ้าน ชื่อถนน และตัวแปรสี ตัวสร้างที่ง่ายที่สุด "House()" ไม่มีอาร์กิวเมนต์และสร้างบ้านด้วยตัวแปรเริ่มต้นหรือตัวแปรว่าง ตัวสร้างที่ซับซ้อนมากขึ้น "House (int houseNumber, String streetName)" สร้างบ้านด้วยหมายเลขบ้านและชื่อถนนที่ระบุ แต่เป็นสีเริ่มต้นหรือว่างเปล่า ตัวสร้างที่ซับซ้อนที่สุด "House (int houseNumber, String streetName, String color)" สร้างบ้านที่มีข้อมูลที่ระบุทั้งหมดโดยไม่ปล่อยให้ไม่มีอะไรเป็นค่าเริ่มต้น จากนั้นคุณสามารถสร้างวัตถุบ้านตามข้อมูลที่มีอยู่ในปัจจุบันโดยปล่อยให้ข้อมูลที่ไม่พร้อมใช้งานว่างหรือเป็นค่าเริ่มต้น

การอ้างอิงที่คลุมเครือ

วิธีการโอเวอร์โหลดต้องใช้ตัวเลขหรือประเภทของอาร์กิวเมนต์ที่แตกต่างกันเพื่อหลีกเลี่ยงความกำกวม หากคุณสร้างสองเมธอดในคลาสเดียวกันที่มีชื่อเหมือนกันและยอมรับจำนวนเต็มสองตัวเป็นอาร์กิวเมนต์ คอมไพเลอร์ Java จะไม่สามารถแยกแยะระหว่างทั้งสองได้ แม้ว่าตัวแปรอินพุตจะมีชื่อต่างกันก็ตาม ตัวอย่างเช่น เมธอด "add (int a, int b)" ไม่สามารถอยู่ในคลาสเดียวกับเมธอด "add (int c, int d)"

ประเภทการคืนสินค้า

คุณต้องกำหนดประเภทการส่งคืนสำหรับแต่ละวิธีที่โอเวอร์โหลด เมธอดสามารถมีประเภทการส่งคืนที่แตกต่างกันได้ ตัวอย่างเช่น "add (int a, int b)" อาจส่งคืนจำนวนเต็ม ในขณะที่ "add (double a, double b)" คืนค่าเป็นสองเท่า อย่างไรก็ตาม Java ไม่สามารถแยกแยะระหว่างสองวิธีที่แตกต่างกันตามประเภทการส่งคืน ดังนั้น "การคูณ int (double a, double b)" จึงไม่สามารถอยู่ในคลาสเดียวกับ "การคูณแบบทวีคูณ (double a, double b)"

หมวดหมู่

ล่าสุด

วิธีการกู้คืน Acer Aspire

วิธีการกู้คืน Acer Aspire

คอมพิวเตอร์ Acer Aspire มาพร้อมกับพาร์ติชั่นที่...

วิธีการคืนค่าโรงงาน Compaq Presario 6000 โดยไม่ต้องใช้แผ่นดิสก์

วิธีการคืนค่าโรงงาน Compaq Presario 6000 โดยไม่ต้องใช้แผ่นดิสก์

Compaq Presario 6000 เป็นเดสก์ท็อปพีซีซีรีส์ที่...

Mac: สัญญาณของบอร์ดลอจิกที่ไม่ดี

Mac: สัญญาณของบอร์ดลอจิกที่ไม่ดี

เครดิตรูปภาพ: Preeti Sagar / iStock / GettyImag...