我试图理解方法重载的概念。
public class Demo {
public int myMethod(int num1, int num2) {
System.out.println("First myMethod of class Demo");
return num1 + num2;
}
public double myMethod(double var1, double var2) {
System.out.println("Second myMethod of class Demo");
return var1 - var2;
}
public static void main(String args[]) {
Demo obj1 = new Demo();
//here
obj1.myMethod(10, 10);
// and here
obj1.myMethod(20, 12);
}
}
我试图找出为什么 obj1.myMethod(10, 10);
中缺少返回类型没有编译错误 和 obj1.myMethod(20, 12);
声明。
显然 myMethod() 都返回 int 和 double。
为什么没有编译错误呢?请帮助我理解。
最佳答案
myMethod()
都返回一些内容。您调用这些方法:
obj1.myMethod(10, 10);
obj1.myMethod(20, 12);
但是你对这个返回值什么也不做。您可能需要考虑将这些方法的返回值存储在变量中,例如:
int first = obj1.myMethod(10, 10); //assigning return value of myMethod to int variable
然后您可以打印first
,看看使用myMethod()
计算出的返回值是多少:
System.out.println(first);
另一种可能性,不是将返回值存储在变量中,而是直接将返回值打印到控制台:
System.out.println(obj1.myMethod(10, 10));
请注意,在这两个方法调用中:
obj1.myMethod(10, 10);
obj1.myMethod(20, 12);
正在调用返回 int
的方法 (public int myMethod(int num1, int num2) {...}
)。这是因为您将 int
参数传递给 myMethod()
。如果您希望调用返回 double 的方法变体,您可以将参数更改为 double
值:
obj1.myMethod(20.0, 12.0); // here you pass two double values as arguments
或者:
obj1.myMethod((double) 20,(double) 12); // here you cast int values to double
关于java - 为什么缺席返回类型没有编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48766422/