重载(overload)和覆盖(override)是Java多态性的不同表现方式
重载是指在一个类中定义了多个同名但参数列表不同的方法,这些方法通过参数来区分
-
不同的参数个数
不同的参数类型
不同的参数顺序
public class OverLoadDemo {
public static void main(String[] args) {
SubClass s = new SubClass();
s.sayHello();
s.sayHello("");
s.doSomething();//Error
s.doSomething("Test");
}
}
class SubClass extends SuperClass {
public void sayHello(String name) {
System.out.println("Greeting from sub class. Hello " + name);
}
public void doSomething(String actionName) {
System.out.println("Action from sub class. Action: " + actionName);
}
}
class SuperClass {
public void sayHello() {
System.out.println("Greeting from super class.");
}
private void doSomething() {
System.out.println("Action from super class.");
}
}
注意:
不能通过方法的访问权限、返回值类型或抛出的异常类型来进行重载;
在Java中,子类和超类之间的方法也可构成重载,但是,如果超类中方法的访问权限为private,那么子类中即便定义了同名的方法,也不属于重载;