java中重载的方法

时间:2017-11-29 15:03:42

标签: java overloading

我对Java中的重载方法有误解。

这些是否过载?

  1. public String eJava(int age, String name, double duration);
  2. float eJava(double name, String age, byte duration);
  3. 在测试中,我写的答案是肯定的。但我不这么认为。 原因: 让我们举一个方法论证的例子:eJava(111,“word”,222);

    正如我所知,这些参数可以传递给两种方法。因为111可以被double和int接受,所以String接受“word”,而byte或double可以接受222。所以我认为正确答案是“编译错误”。

    好的,这些方法有不同的返回类型,但这并不重要。

    我做错了什么? 谢谢

2 个答案:

答案 0 :(得分:5)

是的,它们是重载方法,因为它们具有相同的名称但不同的参数类型。 apomeme的答案提供了更多细节。

回答第二个问题:

您的电话eJava(111, "word", 222)不明确,也不是编译错误。它匹配第一种方法:eJava(int age, String name, double duration)。它与第二种方法不匹配,因为它的第三个参数是一个字节,并且int文字不能隐式转换为一个字节。除非您明确地转换它们,否则不允许进行这种缩小的转换。

但是,如果第二种方法是

float eJava(double name, String age, long duration)

然后调用确实是模糊的和编译错误,因为int literal 可以隐式转换为long。

答案 1 :(得分:0)

一个类可能有多个具有相同名称的方法,但是 使用不同的参数列表。这称为方法重载。 例如:
 具有相同名称的方法:
System.out.println("Hello") - >类型为字符串
System.out.println(4+8) - >类型为int
System.out.println("I have"+100+"$") - >类型为String + int
第二个例子:
 具有相同名称的方法:
int size(int height,int width) - 参数
中有两种类型 int size(int distance) - > peremeter中的一种类型。

相关问题