- 方法覆盖又被称为方法重写
override
- 什么时候使用方法重写?
- 当父类中的方法无法满足子类的业务需求,子有必要见父类中继承过来的方法进行重新编写,这个重新编写的过程称为方法重写、覆盖。
- 什么条件满足之后方法会发生重写?
- 方法重写发生在具有关系的父子类之间。
- 方法名相同、返回值类型相同、参数列表相同。
- 访问权限不能更低,可以更高。
- 抛出异常不能更多,可以更少。
- 注意:
- 私有方法不能继承,所以不能覆盖。
- 构造方法不能继承,所以不能覆盖。
- 静态方法不存在覆盖。
- 覆盖只针对方法,不针对属性。
有一个Animal
类,里面有一个move
方法
public class Animal {
public void move(){
System.out.println("动物在飞行!");
}
}
Cat
类继承了Animal
,那么Cat
可以使用move
方法
public class Cat extends Animal {}
输出动物在飞行!
Cat cat = new Cat();
cat.move();
而猫会飞吗?它不会,Animal
中的move
方法已经无法满足Cat
,这时需要重写Animal
中的 ``move`方法
根据上面第3条第2项规则:
输出猫在地上走!
public class Cat extends Animal {
public void move(){
System.out.println("猫在地上走!");
}
}
这时有一个Bird
类也继承了Animal
public class Bird extends Animal {}
输出:
猫在地上走!
动物在飞行!
Cat cat = new Cat();
cat.move();
Bird bird = new Bird();
bird.move();
本文由 UpYou 创作,采用 知识共享署名4.0
国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为: Nov 9,2020