一、定义
多个方法的名称相同,参数列表不一样,的方法叫做方法重载(Overload)
优点:只需要记住一个方法名称,就可以实现多个类似功能
重载是面向对象
1的一个基本特性。
二、重载的使用
方法名称必须相同
,参数列表不一样
参数个数不同
参数列表类型可不同
参数的多类型顺序不同
与参数名称无关
与方法的返回值类型无关
- 构造方法也可以重载
- 声明为final的方法不能被重载。
- 声明为static的方法不能被重载,但是能够被再次声明
方法重载的过程:
调用过程中方法名称相同时
,编译器会根据调用方法的参数个数
、参数类型
进行逐个匹配
,以选择对应的方法
,如果匹配失败,则编译器报错。
重载示例一:
//参数个数不同
/*
相同类型不同个数的数字相加
*/
public class MethodOverloadSum {
public static void main(String[] args) {
//重载方法的使用
System.out.println(sum(20,30));
System.out.println(sum(20,30,40));
System.out.println(sum(20,30,40,50));
}
//============= 方法重载一 =================
public static int sum(int a,int b){
System.out.println("这是两个数相加");
return a+b;
}
//============= 方法重载二 =================
public static int sum(int a,int b,int c){
System.out.println("这是三个数相加");
return a+b+c;
}
//============= 方法重载三 =================
public static int sum(int a,int b,int c ,int d){
System.out.println("这是四个数相加");
return a+b+c+d;
}
}
重载示例二:
//参数类型不同
/*
定义一个方法比较两个数据是否相等
参数类型分别为两个byte,两个short,两个int,两long类型
*/
public class MethodOverloadSame {
public static void main(String[] args) {
byte a = 10;
byte b = 15;
System.out.println(same(a,b));
System.out.println(same((short)10,(short)10));
System.out.println(same(15,20));
System.out.println(same(15L,15L));
}
public static boolean same(byte a,byte b){
System.out.println("这是两个byte类型的比较");
boolean same;
if (a==b){
same = true;
}else {
same = false;
}
return same;
}
public static boolean same(short a,short b){
System.out.println("这是两个short类型的比较");
boolean same = a==b ? true:false;
return same ;
}
public static boolean same(int a ,int b){
System.out.println("这是两个int类型的比较");
return a==b;
}
public static boolean same(long a,long b){
System.out.println("这是两个long类型的比较");
if (a==b){
return true;
}else {
return false;
}
}
}
重载示例三:
//参数个数相同。类型
/*
打印相同个数不同类型的数据
*/
//在调用输出语句时,println方法就是进行了多种数据类型的重载形式
public class MethodOverloadPrint {
public static void main(String[] args) {
myPrint(100);
myPrint("Hello");
}
public static void myPrint(byte num){
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);
}
}