មេរៀនទី១១: Method Overloading

ប្រសិនប class មួយមានច្រើន methods ដោយឈ្មោះដូចគ្នា ប៉ុន្តែខុសគ្នាប៉ារ៉ាម៉ែត្រ ដូចជា Method Overloading
Javamethod overloading អត្ថប្រយោជន៍លើអ្វី?
Method overloading បង្កើនកម្មវិធីអាន
មធ្យោបាយផ្សេងទៀតលើ overload method
មានមធ្យោបាយពីរដើម្បី overload method ក្នុង java
1.    ដោយការផ្លាស់ប្តូរ ចំនួននៃ arguments
2.    ដោយការផ្លាស់ប្តូរ ប្រភេទទិន្នន័យ data type
Methood Overloading មិនអាចប្តូរ return type របស់ method.
1)ឧទាហរណ៍នៃ Method Overloading ដោយមិនផ្លាស់ប្តូរនៃ argument
ក្នុងឧទាហរណ៍នេះបង្កើត overloaded methods ពីរដំបូង method សរុបនៃ ចំនួនពីរ និង method ទីពីរ បន្ថែម បីចំនួន។
class Calculation{
void sum(int a,int b){System.out.println(a+b);}
void sum(int a,int b,int c){System.out.println(a+b+c);}

public static void main(String args[]){
Calculation obj=new Calculation();
obj.sum(10,10,10);
obj.sum(20,20);

}
1.    }
Output:30
40

2)ឧទាហរណ៍នៃ Method Overloading ដោយការផ្លាស់ប្តូរប្រភេទ data នៃ argument
យើងបានបង្កើត overloaded methods ពីក្នុង data type។ ដែល method ទី១ទទួល បានចំនួន integer argument ពីរនឹង method ទីពីរមាន arguments ពីរ
class Calculation2{
void sum(int a,int b){System.out.println(a+b);}
void sum(double a,double b){System.out.println(a+b);}

public static void main(String args[]){
Calculation2 obj=new Calculation2();
obj.sum(10.5,10.5);
obj.sum(20,20);

}
}
Output:21.0
40
យើងអាច overload main() method?
ដោយប្រើ method overloading លោកអ្នកអាចមានចំនួនច្រើននៃ method ចម្បងក្នុង class មួយដោយ method overloading មើលក្នុងឧទាហរណ៍ខាងក្រោម:
class Overloading1{
public static void main(int a){
System.out.println(a);
}

public static void main(String args[]){
System.out.println(“main() method invoked”);
main(10);
}
}
Output:main() method invoked
10
Method Overloading និង TypePromotion
Javaឧទាហរណ៍នៃ Method Overloading ជាមួយ TypePromotion
1.    class OverloadingCalculation1{
void sum(int a,long b){System.out.println(a+b);}
void sum(int a,int b,int c){System.out.println(a+b+c);}

public static void main(String args[]){
OverloadingCalculation1 obj=new OverloadingCalculation1();
obj.sum(20,20);//now second int literal will be promoted to long
obj.sum(20,20,20);

}
}
Output:40
60
ឧទាហរណ៍នៃ Method Overloading ជាមួយ TypePromotion
ប្រសិនបើបញ្ចូល arguments ក្នុង method
class OverloadingCalculation2{
void sum(int a,int b){System.out.println(“int arg method invoked”);}
void sum(long a,long b){System.out.println(“long arg method invoked”);}

public static void main(String args[]){
OverloadingCalculation2 obj=new OverloadingCalculation2();
obj.sum(20,20);//now int arg sum() method gets invoked
}
}
Output:int arg method invoked

ឧទាហរណ៍នៃ Method Overloading ជាមួយ TypePromotion
ប្រសិនបើមិនមាន arguments ក្នុង method
class OverloadingCalculation3{
void sum(int a,long b){System.out.println(“a method invoked”);}
void sum(long a,int b){System.out.println(“b method invoked”);}

public static void main(String args[]){
OverloadingCalculation3 obj=new OverloadingCalculation3();
obj.sum(20,20);//now ambiguity
}
}
Output:Compile Time Error