我对Java中的重载方法有误解.
这些是否过载?
public String eJava(int age, String name, double duration);float eJava(double name, String age, byte duration);在我写的测试中答案是肯定的.但我不这么认为.理由:让我们举一个方法论证的例子:eJava(111,"word",222);
正如我所知,这些参数可以传递给两种方法.因为111可以被double和int接受,所以String接受"word",而byte或double可以接受222.所以我认为正确的答案是"编译错误".
好的,这些方法有不同的返回类型,但这并不重要.
我究竟做错了什么?谢谢
按照定义:
如果一个类有多个具有相同名称但参数不同的方法,则称为方法重载.有两种方法可以在java中重载该方法
Run Code Online (Sandbox Code Playgroud)By changing number of arguments By changing the data type
所以正确答案是肯定的,那是两个重载方法
是的,它们是重载方法,因为它们具有相同的名称但不同的参数类型.apomeme的答案提供了更多细节.
回答第二个问题:
您的调用eJava(111, "word", 222)不明确,而不是编译错误.它匹配第一种方法:eJava(int age, String name, double duration).它与第二种方法不匹配,因为它的第三个参数是一个字节,并且int文字不能隐式转换为一个字节.除非您明确地转换它们,否则不允许这种缩小的转换.
但是,如果第二种方法是
float eJava(double name, String age, long duration)
Run Code Online (Sandbox Code Playgroud)
然后调用确实是模糊的和编译错误,因为int文字可以隐式转换为long.
| 归档时间: |
|
| 查看次数: |
184 次 |
| 最近记录: |