Method Overloading ในภาษา Java
บทความนี้เรามาทำความรู้จักและดูวิธีการใช้งาน Method Overloading ในภาษา Java กันครับ ว่ามันคืออะไร ใช้งานยังไงในภาษา Java นั้นมีการยอมรับให้ทำการตั้งชื่อ method เป็นชื่อเดียวกันได้ แต่ method ที่ชื่อเดียวกันจะมีความแตกต่างกันที่ชนิดและขนาดของ argument เพราะจะได้เรียกถูกว่าจะใช้ method ตัวไหน ตัวอย่างโค้ดที่มี Method Overloading ตามโค้ดด้านล่าง
package info.doesystem.howto;
public class DoesystemInfo {
public static void main(String[] args) {
}
public static int sumPoint(int a, int b){
return a + b;
}
public static int sumPoint(int a, int b, int c){
return a + b + c;
}
public static long sumPoint(int a, int b, long c){
return a + b + c;
}
}
จากโค้ดเราจะมี method ที่ชื่อ sumPoint เหมือนกันใน Class เดียวกัน แต่เราสามารถรู้ได้ว่า method ไหนเป็น method ไหนโดยการส่ง argument ที่แตกต่างกันไป
Primitives and overloading
เราได้รู้มาแล้วว่าค่า primitive นั้นสามารถแบ่งกลุ่มออกมาได้ โดยมีตัวเลขเป็นหนึ่งในนั้น สมมติว่าเรามีตัวเลขหนึ่ง ๆ อยู่ เช่น 1 แล้วเรามี Method Overloading อยู่รับค่าเป็น primitive หลาย ๆ ค่า เราจะรู้ได้ยังไงว่าต้องส่งไป method ไหน ตามตัวอย่างโค้ดpackage info.doesystem.howto;
public class DoesystemInfo {
void printPrimitive(char x) {
System.out.println("printPrimitive(char)");
}
void printPrimitive(byte x) {
System.out.println("printPrimitive(byte)");
}
void printPrimitive(short x) {
System.out.println("printPrimitive(short)");
}
void printPrimitive(int x) {
System.out.println("printPrimitive(int)");
}
void printPrimitive(long x) {
System.out.println("printPrimitive(long)");
}
void printPrimitive(float x) {
System.out.println("printPrimitive(float)");
}
void printPrimitive(double x) {
System.out.println("printPrimitive(double)");
}
void testDouble() {
double x = 0;
System.out.println("double argument:");
printPrimitive(x);
printPrimitive((float) x);
printPrimitive((long) x);
printPrimitive((int) x);
printPrimitive((short) x);
printPrimitive((byte) x);
printPrimitive((char) x);
}
public static void main(String[] args) {
DoesystemInfo doesystem = new DoesystemInfo();
doesystem.testDouble();
}
}
จากตัวอย่างโค้ด เราจะแก้ปัญหานี้ได้โดยการ cast ให้เป็นชนิดที่ต้องการ เพียงแค่นี้มันก็เข้า method ที่ argument ตรงกันแล้ว
ไม่มีความคิดเห็น:
แสดงความคิดเห็น