Java中的重载和方法返回类型的关系? [英] The relationship of overload and method return type in Java?

查看:210
本文介绍了Java中的重载和方法返回类型的关系?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如果有两种方法,则它们具有不同的参数,并且它们的返回类型不同。像这样:

If there are two method, they have different parameters, and their return types are different. Like this:

int test(int p) {
   System.out.println("version one");
   return p;
}

boolean test(boolean p, int q) {
   System.out.println("version two");
   return p;
}

如果返回类型相同,当然这是重载即可。但由于返回类型不同,我们可以将其视为重载吗?

If the return types are same, of course this is overload. But since the return types are different, can we regard this as overload still?

推荐答案

考虑以下重载点:

1)在java中重载方法的第一个重要规则是更改方法签名。方法签名由参数的数量,参数的类型和参数的顺序组成,如果它们的类型不同。

public class DemoClass {
    // Overloaded method
    public Integer sum(Integer a, Integer b) {
        return a + b;
    }

    // Overloading method
    public Integer sum(Float a, Integer b) {  //Valid
        return null;
    }
}

2)方法的返回类型永远不会方法签名的一部分,所以只更改方法的返回类型不等于方法重载。

public class DemoClass {
    // Overloaded method
    public Integer sum(Integer a, Integer b) {
        return a + b;
    }

    // Overloading method
    public Float sum(Integer a, Integer b) {     //Not valid; Compile time error
        return null;
    }
}

3)方法引发的异常也是重载方法时不考虑。所以你的重载方法抛出相同的异常,一个不同的异常,或者它不会抛出任何异常;对方法加载没有任何影响。

public class DemoClass {
    // Overloaded method
    public Integer sum(Integer a, Integer b) throws NullPointerException{
        return a + b;
    }

    // Overloading method
    public Integer sum(Integer a, Integer b) throws Exception{  //Not valid; Compile time error
        return null;
    }
}

这篇关于Java中的重载和方法返回类型的关系?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆