方法重载(overload):在同一个类,方法功能相似,方法名相同,参数列表不同。与返回值无关,与修饰符无关。
方法覆盖(override):又称方法重写
什么时候使用方法覆盖:
当父类的方法无法满足当前子类的业务需求,
子类将父类继承过来的方法进行重写编写。
满足条件:
方法重写发生在具有继承关系的父子类,
返回值类型相同,方法名相同,形参列表相同
建议:重写的时候复制粘贴,也可用快捷键(右击+source+override)
访问权限不能更低,只能更高
注意私有方法,构造方法不能继承,所以不能覆盖。静态方法不存在覆盖。覆盖只针对方法不谈属性。
public class OverrideTest {
public static void main(String[] args) {
Animal a = new Animal();
a.move();
Cat c = new Cat();
c.move();
Bird b = new Bird();
b.move();
Yingwu y = new Yingwu();
y.move();
}
public class Animal {
public void move() {
System.out.println("动物在移动");
}
}
public class Cat extends Animal{
public void move() {
System.out.println("猫走猫步");
}
}
public class Bird extends Animal{
public void move() {
System.out.println("鸟在飞");
}
}
public class Yingwu extends Bird {
public void move() {
System.out.println("鹦鹉飞不起来");
//这里继承的是Bird,如果不写输出的是“鸟在飞”
}
}
}