方法重载(也称为函数重载)是类具有多个具有相同名称的方法的能力,前提是它们的参数数目或类型不同。
编译器检查方法签名是否存在方法重载。
方法签名包括三件事-
方法名称
参数数量
参数类型
如果对于一个类中的任何两个方法这三个都是相同的,则编译器将抛出重复的方法错误。
这种类型的多态性称为静态或编译时多态性,因为要调用的适当方法由编译器在编译期间基于参数列表决定。
class Polymorph { public int add(int a, int b){ return a + b; } public int add(int a, int b, int c){ return a + b + c; } public float add(float a, float b){ return a + b; } public static void main(String... args){ Polymorph poly = new Polymorph(); int a = 1, b = 2, c = 3; float d = 1.5, e = 2.5; System.out.println(poly.add(a, b)); System.out.println(poly.add(a, b, c)); System.out.println(poly.add(d, e)); } }
这将导致:
2 6 4.000000
重载的方法可以是静态的也可以是非静态的。这也不会影响方法重载。
public class Polymorph { private static void methodOverloaded() { //无参数,私有静态方法 } private int methodOverloaded(int i) { //一参数私有非静态方法 return i; } static int methodOverloaded(double d) { //静态方法 return 0; } public void methodOverloaded(int i, double d) { //公共非静态方法 } }
同样,如果您更改方法的返回类型,我们将无法将其作为方法重载获得。
public class Polymorph { void methodOverloaded(){ //没有参数,没有返回类型 } int methodOverloaded(){ //没有参数和int返回类型 return 0; }