方法的重写(overwrite/override)
定义:指子类与父类的方法返回类型一样,方法名称一样、参数一样,这样我们可以说子类与父类的方法构成了重写关系。方法的重写:又叫做覆盖或覆写
实例理解:比如说定义一个动物类,里面有一个方法是动物sing,而有一个猫类继承了动物类,但它不想显示动物在sing,而是要表明自己是猫在sing,这时我们可以重写父类的方法,把父类的方法覆盖掉。这就是子类对父类的重写。
重写的作用:结合抽象类。
注意:
1、 方法重写与重载之间的关系:重载发生在一个类内部的两个或多个方法,而重写是发生在父类与子类之间。
2、 被重写的方法不能拥有比父类更为严格的访问权限,例如如果父类定义方法为默认的,则子类重写的方法不能为private的,可以为默认的或public的。
例如看以下代码:
public class MethodOverride {
public static void main(String[] args) {
child c = new child();
c.print();
}
}
class child extends parent {
public void print() {
System.out.println("child");
}
}
class parent {
public void print() {
System.out.println("parent");
}
}
子类child与父类parent构成重写,最后是子类覆盖了父类,将输出child,而不会输出parent。要调用父类的方法,使其输出parent,可用super.方法名()来调用,如本程序可用super.print(),此时的super位置并不要放在第一行,例如:
class child extends parent {
public void print() {
super.print();
System.out.println("child");
super.print();//则将会输出:child
parent
}
}
程序将输出:parent
Child