重写(Override)和重载(Overload)
重写发生在父类与子类之间,指子类继承父类时,把父类本身的方法进行修改或者重写,条件是方法名、参数、返回类型要一致,并且子类重写的访问修饰符等级不能低于父类的原方法修饰符等级,并且不能出现抛出新的异常。
public class Father {
public static void main(String[] args) {
Son son = new Son();
son.hello();
}
public void hello(){
System.out.println("hi");
}
}
public class Son extends Father {
@Override
public void hello() {
super.hello();
System.out.println("VitoCollier");
}
}
重载发生在同一个类里,同名的方法,参数类型不同、参数个数不同、参数的顺序不同即为重载,重载对返回类型没有要求,既可以相同也可以不相同,但是不能通过不同的返回类型,来判断是否为重载。
package Page01;
public class Overload {
public static void main(String[] args) {
System.out.println("111");
}
public void say() {
System.out.println("hi");
}
public String say(String a) {
System.out.println("hi" + a);
return "demo";
}
}
package Page02;
import Page01.Overload;
public class OverloadTest {
public static void main(String[] args) {
Overload overload = new Overload();
String vito = overload.say("Vito");
System.out.println(vito);
}
}
重写能够让子类在父类方法基础上加入自己的东西
重载能使用相同的方法名(一个方法)来表示功能相同的(多个)方法,而且在调用的时使用相同名字(一个名字)的方法实现不同的功能。
载能使用相同的方法名(一个方法)来表示功能相同的(多个)方法,而且在调用的时使用相同名字(一个名字)的方法实现不同的功能。
前者增加编译时的多态性,后者增加运行时的多态性。