Java面向对象设计 – Java方法重载
在同一类中具有多个具有相同名称的方法称为方法重载。
类中具有相同名称的方法可以是声明的方法,继承的方法或两者的组合。
重载方法必须具有不同数量的参数,不同类型的参数或两者。
方法的返回类型,访问级别和throws子句对使其成为重载方法没有任何影响。
import java.io.IOException;
class MyClass {
public void m1(int a) {
// Code goes here
}
public void m1(int a, int b) {
// Code goes here
}
public int m1(String a) {
// Code goes here
return 0;
}
public int m1(String a, int b) throws IOException {
// Code goes here
return 0;
}
}
例子
下面的代码显示了如何使用重载。
public class Main {
public double add(int a, int b) {
System.out.println("Inside add(int a, int b)");
double s = a + b;
return s;
}
public double add(double a, double b) {
System.out.println("Inside add(double a, double b)");
double s = a + b;
return s;
}
public static void main(String[] args) {
Main ot = new Main();
int i = 1;
int j = 1;
double d1 = 10.42;
float f1 = 22.3F;
float f2 = 24.5F;
short s1 = 22;
short s2 = 26;
ot.add(i, j);
ot.add(d1, j);
ot.add(i, s1);
ot.add(s1, s2);
ot.add(f1, f2);
ot.add(f1, s2);
}
}
上面的代码生成以下结果。
例2
有时,重载方法和自动类型扩展可能会混淆编译器,导致编译器错误。
class Adder {
public double add(int a, double b) {
return a + b;
}
public double add(double a, int b) {
return a + b;
}
}
public class Main {
public static void main(String[] args) {
Adder a = new Adder();
// double d = a.add(2, 3); // A compile-time error
double d1 = a.add((double) 2, 3); // OK. Will use add(double, int)
double d2 = a.add(2, (double) 3); // OK. Will use add(int, double)
}
}

国外主机测评 - 国外VPS,国外服务器,国外云服务器,测评及优惠码













