重写(Override)是在子类重写父类的方法,以满足子类的特殊要求。
我们有这样的需求:Bird是所有鸟的父类,父类有一个fly方法,表示飞翔,但是不是所有的鸟都有飞翔的能力,就像鸵鸟就不可以飞翔,这样,我们就需要对fly方法进行重写,
class Bird{
public void fly(){
System.out.println("自由自在的飞翔...");
}
}
class Ostrich extends Bird{
public void fly(){
System.out.println("我不会飞,但是会跑");
}
}
class LittleBird extends Bird{}
public class Test05 {
public static void main(String[] args) {
Ostrich ostrich = new Ostrich();
ostrich.fly();//我不会飞,但是会跑
LittleBird lb = new LittleBird();
lb.fly();//自由自在的飞翔...
}
}
实现重载要符合以下的要求:
“两同两小一大”:方法名相同、参数相同、子类的返回值类型要比父类的更小(具体)、子类抛出的异常要比父类的更小(具体)、子类的访问权限要比父类的大(宽泛);
实现重写后,父类的方法子类的实例无法再调用;
实现重写后,子类的方法可以借助super关键字(下一更新会接触到)调用父类的方法;
父类的private方法不可以重写,因为不能访问到。
重写(Override)与重载(Overload)的区别:
两者本来就没有联系,在面试的时候遇到这个问题的话,分别叙述两者的特点即可。