วิธีการโอเวอร์โหลดคือเมธอดในคลาสเดียวกันที่ใช้ชื่อเดียวกันแต่ยอมรับตัวแปรประเภทต่างๆ เป็นอาร์กิวเมนต์ ตัวอย่างเช่น คลาสอาจมีวิธีการ "เพิ่ม" ที่แตกต่างกันสองวิธี: วิธีหนึ่งที่ยอมรับค่าสองเท่าสองค่า "เพิ่ม (สองเท่า 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)"