我试图理解方法重载的概念。
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。
为什么没有编译错误?请帮我理解。
答案 0 :(得分:1)
else
都返回了一些内容。你称这些方法为:
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
。如果希望调用返回double的方法变量,则可以将参数更改为myMethod()
值:
double
或:
obj1.myMethod(20.0, 12.0); // here you pass two double values as arguments