23 方法的重载(overload)

问题

之前已经写了一个方法sumInt用来计算两个int类型数字的和,如果要是想计算两个float类型数字的和呢?ok,那就再来写一个sumFloat方法,除此之外,还有long类型,double类型,如果每种类型都要进行求和计算的话,就会像下面这种情况写4个方法了。

public class MethodTest{

    public static void main(String[] args){

        System.out.println(sumInt(10,20));

        System.out.println(sumDouble(1.0,2.0));

        System.out.println(sumLong(10L,20L));

        System.out.println(sumFloat(1.0F,2.0F));

    }

    public static int sumInt(int a,int b){

        return a + b;

    }

    public static double sumDouble(double a,double b){

        return a + b;

    }

    public static long sumLong(long a,long b){

        return a + b;

    }

    public static float sumFloat(float a,float b){

        return a + b;

    }

}

方法重载(overload)

上面程序有缺点,定义的4个方法,功能上都是计算两个数字的和,只不过传入的参数

类型不同,调用者在调用的时候,需要记忆每个方法的名字,并且需要自己根据传入

参数的类型来判断调用相应的方法,这样使用起来不是很方便,那为了使用方便,我

们来改造一下上面的代码。

public class MethodTest{

    public static void main(String[] args){

        System.out.println(sum(10,20));

        System.out.println(sum(1.0,2.0));

        System.out.println(sum(10L,20L));

        System.out.println(sum(1.0F,2.0F));

    }

    public static int sum(int a,int b){

        return a + b;

    }

    public static double sum(double a,double b){

        return a + b;

    }

    public static long sum(long a,long b){

        return a + b;

    }

    public static float sum(float a,float b){

        return a + b;

    }

}

上面将之前的代码里面的4个方法名全部改成一样的了,这种情况叫做方法重载(overload)。

方法重载发生的条件

1 发生在同一个类中.
2 方法名相同
3 参数列表不同(类型,个数,顺序)

注意:

方法重载和返回值类型无关
方法重载和方法的修饰符列表无关。

//参数的类型不同,构成重载
public static void m1(int a){}
public static void m1(double a){}

//参数的个数不同,构成重载
public static void m2(int a,int b){}
public static void m2(int a){}

//参数的顺序不同,构成重载,不过开发中不这样使用    
public static void m3(int a,double b){}
public static void m3(double a,int b){}

//以下两个m4方法并没有构成重载.
//两个方法完全一样,错误
//public static void m4(int a){}
//public static void m4(int b){}


/*
方法的重载和方法的返回值类型无关,不构成重载
public static void m5(){}
public static int m5(){
    return 100;
}
*/


/*
方法的重载和方法的修饰符列表无关,不构成重载
static void m6(){}
public static void m6(){}
*/

请问System.out.println()这个方法是否构成重载?

构成重载

	System.out.println(1024);//传入int类型
    System.out.println(10.24);//传入double类型    
    System.out.println(true);//传入boolean类型
    System.out.println('m');//传入字符类型
    System.out.println("monkey1024.com");//传入字符串类型
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值