方法重载的基本使用
对于功能类似的方法来说,因为参数列表不一样,却需要记住那么多不同的方法名称,太麻烦。 方法的重载(Overload):多个方法的名称一样,但是参数列表不一样。
好处:只需要记住唯一一个方法名称,就可以实现类似的多个功能。
方法重载的注意事项
方法重载与下列因素相关: 1.参数个数不同
2.参数类型不同 3.参数的多类型顺序不同
public class Demo01MethodOverload{
public static void main(String[] args){
/*System.out.println(sumTwo(10,20));// 30
System.out.println(sumThree(10,20,30));// 60
System.out.println(sumFour(10,20,30,40));// 100
*/
System.out.println(sum(a:10,b:20));//两个参数的方法
System.out.println(sum(a:10,b:20,c:30));//三个参数的方法
System.out.println(sum(a:10,b:20,c:30,d:40));//四个参数的方法
// System.out.println(sum(10,20,30,40,50));//找不到任何方法来匹配,所以错误!
}
public static int sum(int a, int b) {
System.out.println("有2个参数的方法执行!") ;
return a + b;
}
public static int sum(int a, int b, int c) {
System.out.println("有3个参数的方法执行!");
return a+b+c;
}
public static int sum(int a, int b, int c, int d) {
System.out.println("有4个参数的方法执行!");
return a+b+c+d;
}
}
}
方法重载与下列因素无关
1.与参数的名称无关 2.与方法的返回值类型无关
public class Demo01MethodOverload{
public static void main(String[] args){
System.out.println(sum(a:10,b:20));//两个参数的方法
System.out.println(sum(a:10,b:20,c:30));//三个参数的方法
System.out.println(sum(a:10,b:20,c:30,d:40));//四个参数的方法
}
public static int sum(int a, double b) {
return(int) (a + b);
}
public static int sum(double a, int b) {
return(int) (a + b);
}
public static int sum(int a, int b) {
return a + b;
}
//错误写法!与方法的返回值类型无关
// public static double sum(int a, int b){
// return a + b+0.0;
// }
//错误写法!与参数的名称无关
// public static int sum(intxinty){
// return x+y;
// }
public static int sum(double a, double b){
return(int)(a+b);
}
}
重载练习1_四种不同参数类型的方法
题目要求: 比较两个数据是否相等。 参数类型分别为两个byte类型,两个short类型,两个int类型,两个long类型并在main方法中进行测试。
public class Demo02MethodOverloadSame{
public static void main(String[] args){
byte a =10;
byte b =20;
System.out.println(isSame(a,b));
System.out.println(isSame((short) 20,(short) 20));
System.out.println(isSame(a:11,b:12));
System.out.println(isSame(a:10L,b:10L));
}
public static boolean isSame(byte a, byte b) {
boolean same; if(a == b) {
same =true;
} else {
same =false;
}
return same;
}
public static boolean isSame(short a, short b){
boolean same = a == b ? true : false;
return same;
}
public static boolean isSame(int a, int b){
return a == b;
}
public static boolean isSame(long a, long b) {
if (a == b) {
return true;
} else {
return false;
}
}
}
重载练习2_判断方法的正确重载
package cn.itcast.day04.demo04;
public class Demo030verloadJudge{
public static void open(){} // 正确重载
public static void open(int a){} // 正确重载
static void open(int a,int b){}//代码错误:和第8行冲突
public static void open(double a,int b){} // 正确重载
public static void open(intadoubleb){}//代码错误:和第6行冲突
public void open(int idoubled){}//代码错误:和第5行冲突
public static void OPEN((){}//代码正确不会报错,但是并不是有效重载
public static void open(inti inti){} //代码错误:和第3行冲突
}
重载练习3_实现重载的println方法
在调用输出语句的时候,println方法其实就是进行了多种数据类型的重载形式。
public class Demo040verloadPrint {
public static void main(String[] args){
myPrint(num:100);// int
myPrint(str:"Hello");// string
}
public static void myPrint(bytenum){
System.out.println(num);
}
public static void myPrint(short num){
System.out.println(num);
}
public static void myPrint(int num) {
System.out.println(num);
}
public static void myPrint(long num) {
System.out.println(num);
}
public static void myPrint(float num){
System.out.println(num);
}
public static void myPrint(double num){
System.out.println(num);
}
public static void myPrint(char num {
System.out.println(num);
}
public static void myPrint(boolean is) {
System.out.println(is);
}
public static void myPrint(String str){
System.out.println(str);
}
}