【答疑解惑】Java中的方法重载

语音版:

我定义了一个类如下:

public class FirstJava {
    private int value;
    private int count;
    public void setValue(int value) {
        this.value = value;
    }

    public int setValue(int value) {
        this.value = value;
        return value;
    }
    
    public void setValue(int value, int count) {
        this.value = value;
        this.count = count;
    }
}

上面的代码定义了三个setValue方法,第一个与第二个区别是方法返回值不同,第三个是增加了一个参数。上面的代码大家检查一下能不能编译过,答案先不说,先来说一下Java中方法重载是怎么回事。方法重载的规则是方法名字相同,参数列表不同。

参数列表不同分为下面三种情况:

  • 参数个数不同:这个很容易理解,方法参数可以使一个也可以是两个等等;
  • 参数顺序不同:参数个数相同,包含有不同的数据类型,但是参数的顺序不一样,这种情况应该是避免出现的,因为这样的代码比较丑陋,难以维护;
  • 参数类型不同:参数个数相同,但是参数的数据类型不同;

清楚了重载的规则大家应该不难判断出来上面的代码是有问题的,因为规则中没有通过方法的返回值来区分方法重载的,所以第二个setValue不能那样写。

原文发布于微信公众号 - 程序员互动联盟(coder_online)

原文发表时间:2015-08-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Web行业观察

一张图撸明白prototype原型链

expression instanceof class expression和class都是必选项。

2654
来自专栏从零开始学 Web 前端

从零开始学 Web 之 JavaScript(四)数组

arguements 是伪数组:不能修改长短的数组。(可以修改元素,但是不能变长变短)

832
来自专栏mathor

2017百度之星初赛(A):今夕何夕

952
来自专栏Petrichor的专栏

python: append & extend 异同

  经过试验,总结出 python 中 append 和 extend 的异同点如下表:

902
来自专栏浪淘沙

Java学习day2--JAVA基础

2018.6.5 1.简单的java运行 javac Demo.java java Demo

1083
来自专栏Python小屋

Python编程常见出错信息及原因分析(2)

(1)缩进错误 演示代码: >>> if 5>3: print('5>3') SyntaxError: expected an indented block >...

4067
来自专栏我和未来有约会

Js中的变量

Js中的变量:  1:如果在var中没有初始化变量的值,则默认为undefined.  2:可以不用var来申明一个变量,但是在过程级中申明一个变量时,就必须用...

2196
来自专栏Python小屋

Python编程中一定要注意的那些“坑”(一)

1 逗号不是运算符,只是个普通的分隔符 >>> x = 3, 5 >>> x (3, 5) >>> x == 3, 5 (False, 5) >>> 1, 2...

3195
来自专栏个人随笔

Java 中的异常处理机制

生活中的异常:  不能够完整而顺利的完成一些工作  根据不同的异常进行相应的处理,而不会就此终端我们的生活 引出:   异常处理:   方式:     ...

35210
来自专栏hbbliyong

python 函数参数的传递(参数带星号的说明)

python中函数参数的传递是通过赋值来传递的。函数参数的使用又有俩个方面值得注意:1.函数参数是如何定义的 2.在调用函数的过程中参数是如何被解析 先看第一个...

3578

扫码关注云+社区