1. วิธีการโอเวอร์โหลด
ชื่อวิธีการเหมือนกัน แต่พารามิเตอร์แตกต่างกันนี่คือโอเวอร์โหลด
พารามิเตอร์ที่แตกต่างกันที่เรียกว่ามีสองประเด็นหลัก: ประการแรกคือจำนวนพารามิเตอร์ที่แตกต่างกันและข้อที่สองคือประเภทของพารามิเตอร์แตกต่างกัน ตราบใดที่หนึ่งในสองด้านนี้แตกต่างกันก็สามารถเป็นวิธีการโอเวอร์โหลดของวิธีการ
แพ็คเกจ cn.galc.test; การทดสอบคลาสสาธารณะ {void max (int a, int b) {system.out.println (a> b? a: b); } / * * int max (int a, int b) { * return a> b? A: B; *} */ void max (ลอย A, float b) {system.out.println (a> b? a: b); -ที่นี่วิธีการสูงสุดสองวิธีที่มีโมฆะตัวดัดแปลงมีชื่อเดียวกัน แต่ประเภทพารามิเตอร์ของพวกเขาแตกต่างกันดังนั้นพวกเขาจึงสามารถถือได้ว่าโอเวอร์โหลด วิธี int max (int a, int b) และวิธีการสูงสุด (int a, int b) ไม่ได้เป็นการโอเวอร์โหลด ตอนนี้พวกเขาเป็นสองวิธีที่มีชื่อซ้ำ ไม่อนุญาตให้ประกาศสองวิธีที่มีชื่อซ้ำในคลาสและจะมีข้อผิดพลาดในการรวบรวม ชื่อเมธอดเหมือนกันและประเภทพารามิเตอร์เหมือนกัน เฉพาะค่าส่งคืนจะแตกต่างกัน สิ่งนี้ไม่ได้เป็นการโอเวอร์โหลดเนื่องจากวิธีนี้สามารถเรียกได้ด้วยวิธีนี้ ไม่สามารถใช้งานได้เมื่อเรียกวิธีการ ดังนั้นเมื่อเรียกใช้สองวิธีนี้หมายเลขจำนวนเต็มจะถูกส่งผ่านเนื่องจากทั้งสองวิธีมีชื่อเดียวกันและประเภทพารามิเตอร์เดียวกันคอมไพเลอร์ไม่สามารถแยกแยะวิธีการที่จะเรียกใช้ เหตุผลในการใช้งานมากเกินไปในระดับลึก: ตราบใดที่คอมไพเลอร์ของทั้งสองวิธีนี้สามารถแยกแยะพวกเขาและรู้ว่าสิ่งใดที่จะเรียกเมื่อโทรมาจะไม่มีความสับสนวิธีการทั้งสองนี้เป็นการโอเวอร์โหลด
มาดูสองวิธีต่อไปนี้:
int max (int a, int b) {system.out.println ("int max (int a, int b) วิธีที่เรียกว่า"); กลับมา> b? A: b;} int สูงสุด (สั้น a, short b) {system.out.println ("int max (สั้น a, short b) วิธีที่เรียกว่า"); กลับมา> b? A: B;} วิธีการทั้งสองนี้ยังอาจเป็นการโอเวอร์โหลดเนื่องจากคอมไพเลอร์จะถือว่าเป็นประเภท int ทันทีที่เขาเห็นจำนวนเต็ม ดังนั้นเมื่อผ่านจำนวนเต็มเข้าไปคอมไพเลอร์จะเรียกเมธอดสูงสุด (int a, int b) ก่อน หากคุณต้องการเรียก Method Max (Short A, Short B) คุณต้องเขียนด้วยวิธีหลักเช่นนี้:
โมฆะคงที่สาธารณะหลัก (สตริง [] args) {testoverload t = testoverload ใหม่ (); T.Max (3,4); // วิธีสูงสุด (int a, int b) เรียกว่าสั้น a = 3; สั้น b = 4; t.max (a, b); // เมธอดสูงสุด (สั้น a, สั้น b) เรียกว่าที่นี่ -2. การใช้วิธีการก่อสร้างมากเกินไป
เช่นเดียวกับวิธีการทั่วไปตัวสร้างยังสามารถบรรทุกเกินพิกัดได้
แพ็คเกจ cn.galc.test; บุคคลระดับสาธารณะ {int id; อายุ int; / *** constructor*/ บุคคลสาธารณะ () {id = 0; อายุ = 20; } / *** constructor overload หนึ่ง* @param i* / บุคคลสาธารณะ (int i) {id = i; อายุ = 20; } / ** * Constructor overload สอง * @param i * @param j * / บุคคลสาธารณะ (int i, int j) {id = i; อายุ = J; -ข้างต้นเป็นคำอธิบายโดยละเอียดเกี่ยวกับการโอเวอร์โหลดของวิธี Java ฉันหวังว่ามันจะเป็นประโยชน์กับการเรียนรู้ของทุกคน