16/10/58

Method Overloading ในภาษา Java

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 ตรงกันแล้ว

ไม่มีความคิดเห็น:

แสดงความคิดเห็น