一.基本使用
对于功能类似的方法来说,因为参数列表不一样,却需要记住那么多不同的方法名称,太麻烦
方法的重载(Overload),多个方法的名称一样,但是参数列表不一样
方法重载与下列因素有关:
1.参数个数不同
2.参数类型不同
3.参数多类型顺序不同
public class demo01_MethodOverload {
public static void main(String[] args) {
System.out.println(sum(10.2,10.33));
System.out.println(sum(10,10,66));
System.out.println(sum(10,10,66,88));
}
//1.参数个数不同
public static int sum(int a,int b){
return a+b;
}
//1.参数个数不同
public static int sum(int a,int b,int c){
return a+b+c;
}
//1.参数个数不同
public static int sum(int a,int b,int c,int d){
return a+b+c+d;
}
//2.参数类型不同
public static int sum(double a,double b){
return (int)(a+b);
}
//3.参数多类型顺序不同
public static int sum(int a,double b){
return (int)(a+b);
}
//3.参数多类型顺序不同
public static int sum(double a,int b){
return (int)(a+b);
}
}
public class demo01_MethodOverload {
public static void main(String[] args) {
System.out.println(sum(10.2,10.33));
System.out.println(sum(10,10,66));
System.out.println(sum(10,10,66,88));
}
//1.参数个数不同
public static int sum(int a,int b){
return a+b;
}
//1.参数个数不同
public static int sum(int a,int b,int c){
return a+b+c;
}
//1.参数个数不同
public static int sum(int a,int b,int c,int d){
return a+b+c+d;
}
//2.参数类型不同
public static int sum(double a,double b){
return (int)(a+b);
}
//3.参数多类型顺序不同
public static int sum(int a,double b){
return (int)(a+b);
}
//3.参数多类型顺序不同
public static int sum(double a,int b){
return (int)(a+b);
}
}
二.注意事项
方法重载与以下因素无关
1.与参数的名称无关
2.与方法的返回值类型无关
三.练习
1.题目要求:
比较两个数据是否相等。
参数类型分别为两个byte类型,两个short类型,两个int类型,两个long类型
并在main方法中进行测试
package cn.edu.qilu.day1.demo03;
/*
题目要求:
比较两个数据是否相等。
参数类型分别为两个byte类型,两个short类型,两个int类型,两个long类型
并在main方法中进行测试
*/
public class demo02_MethodOverloadSame {
public static void main(String[] args) {
byte a = 10;
byte b = 20;
System.out.println(isSame(a,b));
System.out.println(isSame((short)a,(short)b));
System.out.println(isSame(11,12));
System.out.println(isSame(10L,10L));
}
public static boolean isSame(byte a,byte b){
System.out.println("两个byte类型的方法执行");
boolean same;
if(a==b) {
same = true;
} else {
same = false;
}
return same;
}
public static boolean isSame(int a,int b){
System.out.println("两个int类型的方法执行");
boolean same;
if(a==b) {
same = true;
} else {
same = false;
}
return same;
}
public static boolean isSame(short a,short b){
System.out.println("两个short类型的方法执行");
boolean same;
if(a==b) {
same = true;
} else {
same = false;
}
return same;
}
public static boolean isSame(long a,long b){
System.out.println("两个long类型的方法执行");
boolean same;
if(a==b) {
same = true;
} else {
same = false;
}
return same;
}
}
两个byte类型的方法执行
false
两个short类型的方法执行
false
两个int类型的方法执行
false
两个long类型的方法执行
true
Process finished with exit code 0
2.重载print
package cn.edu.qilu.day1.demo03;
//shift+F6 可编辑所有用到光标处的单词
public class demo03_MethodOverloadPrint {
public static void main(String[] args) {
myPrint(100); //int
myPrint("OLG"); //String
}
public static void myPrint(byte 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 zifu){
System.out.println(zifu);
}
public static void myPrint(boolean is){
System.out.println(is);
}
public static void myPrint(String str){
System.out.println(str);
}
}
100
OLG
Process finished with exit code 0