方法的重载

方法重载是允许在一个类的定义中,多个方法使用相同的方法名。

1、成员方法重载

Eg:方法名为println,要重载方法名,可以如下声明:

public void println (int i)

public void println (float f)

public void println (String s)

重载方法有两条规则:

(1)调用语句的自变量列表必须足够判明要调用的是哪个方法。自变量的类型可能要进行正常的扩展提升(如浮点变为双精度),但在有些情况下会引起混淆。

(2)方法的返回类型可能不同。如果两个同名方法只有返回类型不同,而自变量列表完全相同,则是不够的。因为在方法执行前不知道能得到什么类型的返回值,所以也就不能确定要调用的是哪个方法。重载方法的参数表必须不同,即参数个数或参数类型不同。


下面的例题对寻求几个不同类型数据最大者的成员方法max()进行了重载。

import java.util.Random;

public class OverLoadingTest{
    public float max(float f1,float f2){
        if(f1>f2) return f1;
        else return f2;
    }

    public int max(int m,int n){
        if(m>n) return m;
        else return n;
    }

    public int max(int l,int m,int n){
        return max(max(l,m),n);
    }

    public static void main(String[] args){
        OverLoadingTest o1=new OverLoadingTest();
        Random random=new Random();

        float f1=random.nextFloat();
        float f2=random.nextFloat();
        float f3=random.nextFloat();
        int a=Math.round(100*f1);
        int b=Math.round(100*f2);
        int c=Math.round(100*f3);

        //将自动调用max(int,int)
        System.out.println("max("+a+","+b+")="+o1.max(a,b));
        //将自动调用max(float,float)
        System.out.println("max("+f1+","+f2+")="+o1.max(f1,f2));
        //将自动调用max(int,int,int)
        System.out.println("max("+a+","+b+","+c+")="+o1.max(a,b,c));
    }
}


在其运行结果中用println()方法输出float、int等不同类型的数据。我们不需要对方法println()进行重载,因为java.lang.System类的out变量是java.io.PrintStream类型的。而在PrintStream类中对println()方法进行了重载,定义了多个println()方法。所以我们能够方便的对各种数据类型进行输出显示。


2、构造方法重载

Eg:

public class Xyz{

int x; // 成员变量

public Xyz(){//无参的构造方法

x=0;

}

public Xyz(int i){//带参的构造方法

x=i;

}

}

在创建Xyz的实例时,可以使用两种形式:

Xyz xyz1=new Xyz();//使用无参的构造方法

Xyz xyz2=new Xyz(6);//使用有一个int参数的构造方法


因为构造方法的特殊性,它不允许程序员按通常调用方法的方法来调用。构造方法中参数列表的说明方式决定了该类实例的创建方式。


资料来源:Java程序设计教程(第二版) 清华大学出版社

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值