我对Java中的重载方法有误解。
这些是不是超载了?
public String eJava(int age,String name,双持续时间);
浮动eJava(双名、字符串年龄、字节持续时间);
在我写的测试中,答案是肯定的。但我不这么认为。原因:让我们以方法参数为例:eJava(111,"word",222);
正如我所知,这些参数可以传递给这两种方法。因为111可以被double和int接受,“word”被String接受,222可以被byte或double接受。所以我认为正确的答案是“编译错误”。
好的,这些方法有不同的返回类型,但这并不重要。
我做错什么了?谢谢
是的,它们是重载方法,因为它们具有相同的名称但不同的参数类型。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")
--