提问者:小点点

重载java中的方法


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

这些是不是超载了?

  1. public String eJava(int age,String name,双持续时间);
  2. 浮动eJava(双名、字符串年龄、字节持续时间);

在我写的测试中,答案是肯定的。但我不这么认为。原因:让我们以方法参数为例:eJava(111,"word",222);

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

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

我做错什么了?谢谢


共3个答案

匿名用户

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

回答第二个问题:

您的调用eJava(111,"word",222)没有歧义,也不是编译错误。它与第一种方法相匹配:eJava(int age, String name,双持续时间)。它不能与第二种方法相匹配,因为它的第三个参数是字节,而int文字不能隐式转换为字节。除非您显式转换它们,否则不允许这种缩小转换。

但是,如果第二种方法是

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

那么调用确实会有歧义和编译错误,因为int文字可以隐式转换为long。

匿名用户

根据定义:

如果一个类有多个同名但参数不同的方法,则称为方法重载。有两种方法可以重载java中的方法

By changing number of arguments
By changing the data type

所以正确答案是YES,这是两个重载方法

匿名用户

一个类可能有多个同名方法,但具有不同的参数列表。这称为方法重载。例如:
同名方法:
System. out.println("Hello")--