JAVA的函数重载:
返回值类型不能作为方法重载的标识符。
举例:
package com.dalton.method;
public class Demo02 {
public static void main(String[] args) {
int max = max(1, 2);
double double_max = max(10.0, 10.0);
System.out.println(max + " " + double_max);
}
public static double max(double a, double b) {
double result = 0;
if (a >= b) {
result = a;
}
if (a < b) {
result = b;
}
return result;
}
//比大小
public static int max(int a, int b) {
int result;
if (a > b) {
result = a;
}
if (a < b) {
result = b;
} else {
System.out.println("两数相等");
return 0;
}
return result;
}
}
在这段代码中,如果对应形参a和b输入的1和2,即实参为int型,那么程序运行选择的max始终为int max(int a,int b),而与变量max的类型无关。
在这种情况下,如果实参为int型,而输出的变量double_max为double型。此时程序选择的max()仍为int max(),得到int型的return值后,强制转换为double类型。
原本两个不同类型的max函数的结构相同,仅修改return类型,运行程序时无法识别使用的函数为哪一个max()。故修改double max()。
不过debug模式下也可看出实际使用的max()。