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 ตรงกันแล้ว
ไม่มีความคิดเห็น:
แสดงความคิดเห็น