子类继承父类之后,就拥有了符合权限的父类的属性和方法,但是当父类的方法不符合子类的要求的时候,子类也可以重新的书写自己想要的方法。
所以,方法的重写,也叫方法的覆盖,即子类继承父类的方法后,由于父类的方法不满足子类的需求,子类重新书写该方法。
前提条件:必须是子类,才能重写父类中的具有继承权限的方法。
从书写一个方法的顺序要求:
权限修饰符必须大于或者等于父类的权限修饰符;
方法名、返回值类型、参数一致;
抛出的异常必须比父类的要小。
在第4点有每一个不符合的错误。
父类:
package com.dh.oop;
public class Parent {
public void print(){
System.out.println("我是爸爸");
}
}
子类:
package com.dh.oop;
public class Son extends Parent{
}
package com.dh.oop;
public class OverrideDemo {
public static void main(String[] args) {
Son son = new Son();
son.print();
}
}
结果:
因为此时子类没有该方法,但是继承了父类的方法,所以调用的是父类的方法。
现在子类中重写该print方法:
package com.dh.oop;
public class Son extends Parent{
@Override
public void print() {
System.out.println("我是儿子");
}
}
当子类重写了父类的方法之后,new子类对象,调用该方法:
(小tip:alt+ins可以直接选择并生成想重写的方法)
package com.dh.oop;
public class OverrideDemo {
public static void main(String[] args) {
Son son = new Son();
son.print();
}
}
结果:
因为此时在子类中重写了父类的方法,所以子类对象调用的就是父类的方法了。
权限修饰符小于父类:
返回值不一样:
方法名不一样:
参数不一样:
抛出的异常大于父类:
本人水平有限,若有错误,请指出,感激不尽~
原文:https://www.cnblogs.com/denghui-study/p/14306428.html