【问题标题】:Overloading in same class Java [duplicate]在同一个类Java中重载[重复]
【发布时间】:2015-04-02 01:52:35
【问题描述】:

我目前正在尝试了解超载,但有点困惑。我知道在调用相同的方法时,它不能具有完全相同的参数。例如,使用 2 个 int 变量调用的方法,然后使用两个不同的 int 变量调用另一个方法。但是,如果我使用 int 和 float,那就没问题了。我知道返回类型无关紧要,但它是公共方法还是私有方法呢?这有关系吗?

例如,假设我打电话给public int name(int x),我可以打电话给private int name(int x)吗?

我是否正确假设public double name(String x) 也会导致班级超载? public int name(int x, String y) 也有效吗?将字符串参数传递给 int 函数?这会导致过载或错误吗?

编辑:不要相信这个问题是重复的,我的主要问题是公共和私人之间的区别,它们是方法还是不同,是否会导致重载。没有看到其他问题中提到的。

【问题讨论】:

  • 与其问我们是否有效,不如自己试试看?发现是最好的学习方式。
  • 对不起,我不在我的开发者电脑上,也没有在这台电脑上安装 Java,不过我当然同意你的看法!
  • @Manu 反复试验并不一定能保证某些东西总能奏效。行为可能是未定义的或特定于实现的。

标签: java overloading


【解决方案1】:

来自Oracle tutorial

重载的方法通过传递给方法的参数的数量和类型来区分。

...

您不能声明多个具有相同名称、相同数量和类型的参数的方法,因为编译器无法区分它们。

所以没有访问修饰符不算数。你不能同时拥有public int name(int x)private int name(int x)

我是否正确假设 public double name(String x) 也会导致班级重载?

是的,因为它具有相同的名称但具有不同的参数类型。

public int name(int x, String y) 也有效吗?将字符串参数传递给 int 函数?这会导致过载或错误吗?

同样,由于它具有相同的方法名称但具有不同的参数类型,因此它是一个重载方法。

【讨论】:

  • 好的,所以public int name(int x)private int name(int x) 不会导致过载?因为 public 和 private 是类内部的两个完全不同的方法吗?感谢您的回复,其余的我明白了。
  • @still2blue 这两个方法甚至不能一起编译。 privatepublic 不用于判断方法是否重载。
猜你喜欢
  • 2011-08-23
  • 2010-12-14
  • 2018-10-29
  • 1970-01-01
  • 1970-01-01
  • 2010-11-08
  • 1970-01-01
相关资源
最近更新 更多