- - บทช่วยสอน: วิธีการโอเวอร์โหลดใน Java ด้วยรหัส

บทช่วยสอน: วิธีการโอเวอร์โหลดใน Java ด้วยรหัส

ตั้งแต่ตอนนี้คุณคุ้นเคยกับการสร้างอินสแตนซ์คลาสใน Java เราสามารถพูดถึง Polymorphism และ Method Overloading ความแตกต่างคือความสามารถของวัตถุ Java ที่จะตอบสนองอย่างสม่ำเสมอเพื่อให้บรรลุพฤติกรรมที่เฉพาะเจาะจงกับวิธีการเรียกชื่อเดียวกัน แต่มีการใช้งานที่แตกต่างกัน ใน Java แนวคิดของ Polymorphism สามารถทำได้หลายวิธี นี่คือ Java Tutorial ของเราพร้อมโค้ดสำหรับการโอเวอร์โหลดวิธี

Java Tutorial พร้อมโค้ดสำหรับการโอเวอร์โหลดเมธอด

วิธีการบรรทุกเกินพิกัดคืออะไร

ใน Java เป็นไปได้ที่จะกำหนดสองคนขึ้นไปวิธีการภายในชั้นเดียวกันที่ใช้ชื่อเดียวกัน อย่างไรก็ตามการประกาศพารามิเตอร์ของพวกเขาควรจะแตกต่างกัน วิธีการเหล่านี้มีการกล่าวถึงมากเกินไปและกระบวนการนี้เรียกว่าวิธีการมากไป

วิธีการบรรทุกเกินพิกัดรองรับความหลากหลาย เพราะมันเป็นวิธีหนึ่งที่ Java ใช้กระบวนทัศน์“ หนึ่งอินเตอร์เฟสหลายวิธี”

คุณสมบัติ

  • ในคลาสแนวคิดของการโอเวอร์โหลดเมธอดไม่อนุญาตให้ผู้ใช้ภายนอกตระหนักถึงการประมวลผลภายในของระบบ
  • วิธีที่มากเกินไปแตกต่างกันในจำนวนพารามิเตอร์หรือชนิดของพารามิเตอร์หรือลำดับของพารามิเตอร์
  • วิธีที่มากเกินไปได้รับการแก้ไขในลำดับต่อไปนี้:
    1. จำนวนพารามิเตอร์
    2. ประเภทของพารามิเตอร์
    3. ลำดับของพารามิเตอร์

บนพื้นฐานของวิธีการเหล่านี้จะถูกเรียกตามลำดับเพื่อส่งกลับผลลัพธ์ที่ต้องการ

  • วิธีการบรรทุกเกินพิกัดช่วยให้ผู้ใช้เพื่อให้บรรลุ การรวบรวมความแตกต่างของเวลา
  • เมธอดที่โอเวอร์โหลดอาจมีประเภทผลตอบแทนเหมือนหรือต่างกัน

โปรแกรม Java สำหรับการโอเวอร์โหลดเมธอด

class Figure{
/* Calculate Area of Square */
void area(double length){
System.out.println("Area of Square is: "+Math.pow(length,2));
}
/* Calculate Area of Rectangle */
void area(double length,double breadth){
System.out.println("Area of Rectangle is: "+(length*breadth));
}
/* Calculate Area of Cylinder */
void area(double radius,int height){
System.out.println("Area of Cylinder is: "+(2*3.14*Math.pow(radius,2)*height));
}
/* Calculate Area of Cube */
void area(int arms){
System.out.println("Area of Cube is: "+(6*arms*arms));
}
}
class CalculateArea{
public static void main(String args[]){
Figure fig = new Figure();
fig.area(5.25);
fig.area(4.5,5.5);
fig.area(2);
fig.area(3.2,6);
}
}

การส่งออกของวิธีการบรรทุกเกินพิกัด

Java Tutorial พร้อมโค้ดสำหรับการโอเวอร์โหลดเมธอด

คำอธิบายของรหัส Java & ผลผลิต

ที่นี่ภายในคลาส Figure area () มีการโอเวอร์โหลดวิธีการที่มีชื่อเดียวกันกับการใช้งานที่แตกต่างกันเช่นกระบวนทัศน์ "หนึ่งอินเทอร์เฟซหลายวิธี" คุณสามารถระบุได้ว่าวิธีการเดียวกันนี้ใช้ในการปฏิบัติงานที่แตกต่างกันเช่นการคำนวณพื้นที่ของพื้นที่ทางเรขาคณิตที่แตกต่างกันตามจำนวน / ประเภท / ลำดับของพารามิเตอร์ที่ส่งผ่านและผลผลิตที่ต้องการ

วิธีการภาวนาอาจจะเป็นคำสั่งใด ๆ ใช้เป็นพื้นที่ method () เพื่อคำนวณพื้นที่ของลูกบาศก์ที่ถูกเรียกใช้ก่อนที่จะเรียกใช้พื้นที่ method () เพื่อคำนวณพื้นที่ของทรงกระบอก

ในโปรแกรมเราเรียกอีกอย่างหนึ่งว่า static method pow () ของคลาส Math ซึ่งเป็นสมาชิกของแพ็คเกจ java.lang เพื่อคำนวณกำลังสองของจำนวนใด ๆ

เปิดแฟลช

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

ดังนั้นเมื่อ display () ถูกเรียกด้วยอาร์กิวเมนต์จำนวนเต็มภายใน OverloadDemo ไม่พบวิธีการจับคู่ อย่างไรก็ตาม Java สามารถแปลงจำนวนเต็มเป็นคู่โดยอัตโนมัติและการแปลงนี้สามารถใช้ในการแก้ไขการโทร ดังนั้นหลังจากไม่พบ display (int) Java จะยกระดับ“ i” เป็น double แล้วจึงเรียก display (double) แน่นอนว่าหากมีการกำหนด“ display (int)” มันจะถูกเรียกแทน

class Overload {
// display method with no parameters
void display() {
System.out.println("No parameters");
}
// Overload display for two integer parameters.
void display(int a, int b) {
System.out.println("a and b: " + a + " " + b);
}
// overload display for a double parameter
void display(double a) {
System.out.println("a: " + a);
}
}
class OverloadDemo {
public static void main(String args[]) {
Overload overload = new Overload();
int i = 88;
ob.display();
ob.display (10, 20);
ob.display (i); // this will invoke display(double)
ob.display (123.2); // this will invoke display(double)
}
}

N.B: การแปลงนี้เป็นจริงสำหรับประเภทข้อมูลที่ต่ำกว่า (เช่น int) เป็นประเภทข้อมูลที่สูงกว่า (เช่นสองเท่า) ไม่ใช่สำหรับการแปลงกลับ (สองเท่าเป็น int)

ในบทช่วยสอนถัดไปของเราเราจะเรียนรู้เกี่ยวกับ Constructor overloading ใน Java

ความคิดเห็น