JAVA中的方法覆盖Override机制
先对前面学习过的方法重载进行复习:
- 方法重载又称为Overload
- 方法重载什么时候使用:在同一个类中,方法完成的功能是相似的。建议方法名相同,参数列表不同,以使用Overload功能,这样方便编程。
- 什么条件满足后构成方法重载:
——在同一个类中
——方法名相同
——参数列表不同:类型、顺序、个数 - 方法重载和什么无关:
——和方法的返回值无关
——和方法的修饰符列表无关
关于java中方法的覆盖:
-
方法覆盖又被称为方法重写,Override【官方】/ Overwrite
-
什么时候进行方法重写:
——当父类中的方法已经无法满足子类中业务的需求,子类有必要对父类继承过来的方法进行重新编写,这个重新编写的过程成为方法重写/方法覆盖 -
什么条件满足后会发生方法重写:
——方法重写发生在具有继承关系的父子类之间
——方法重写的时候:返回值类型相同,方法名相同,形参列表相同
——方法重写的时候:访问权限不能更低,可以更高(权限:public > private > protected ,即子类修改时,权限要和父类相同或更高)
——方法重写的时候:触发异常不能更多,可以更少(先mark,这个还没学) -
方法重写建议复制粘贴,避免出错。
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 Parrot extends Bird{ //鹦鹉类 继承自鸟类
public void move(){
System.out.println("鹦鹉不会飞");
}
}
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();
Parrot p = new Parrot();
p.move();
}
}
//运行结果
动物在移动
猫在睡懒觉
鸟儿在飞翔
鹦鹉不会飞
Process finished with exit code 0