我们先创建一个动物类
1 package 方法的覆盖; 2 //动物类 3 public class Animal { 4 5 public void move(){ 6 System.out.println("动物在移动"); 7 } 8 }
然后再创建一个类去继承它
1 package 方法的覆盖; 2 //猫科类 3 public class Cat extends Animal{ 4 5 public void move(){ 6 System.out.println("动物在移动"); 7 } 8 }
1 package 方法的覆盖; 2 3 /** 4 * 1.方法的覆盖又被称为方法的重写,英文叫override 5 * 6 * 2.什么时候使用方法重写? 7 * *当父类中的方法已经无法满足当前子类的业务需求, 8 * 有必要将父类继承过来的方法进行重新编写, 9 * 这个重新编写的过程称为方法重写/方法覆盖。 10 * 3.什么条件发生后会发生重写? *方法重写发生在继承关系的父子类之间 11 * *方法名相同,返回值类型相同,形参列表相同 12 * *例:在重写的时候void move ()这三个都不能变 13 * *访问权限不能更低,可以更高。 14 * *抛出异常不能更多,可以更少。 15 * 4.建议复制粘贴写 16 * 5.注意: 17 * 私有方法不能继承,所以不能覆盖。 18 * 构造方法不能继承,所以不能覆盖。 19 * 静态方法不存在覆盖。 20 * 覆盖只针对方法不谈属性 21 */ 22 public class User { 23 public static void main(String[] args) { 24 // 创建动物对象 25 Animal a = new Animal(); 26 a.move(); 27 28 // 创建猫科类动物对象 29 Cat c = new Cat(); 30 c.move(); 31 35 } 36 }
运行后是两行“动物在移动”的结果
如果我们想要让猫类在继承的情况下输出”猫在走路“我们要将猫类代码改成
1 package 方法的覆盖; 2 //猫科类 3 public class Cat extends Animal{ 4 5 public void move(){ 6 System.out.println("猫在走猫步"); 7 } 8 9 }
它就能覆盖继承的代码结果就是
但我们要注意覆盖的代码必须遵从以下规则
*方法名相同,返回值类型相同,形参列表相同
*例:在重写的时候void move ()这三个都不能变
*私有方法不能继承,所以不能覆盖。
* 构造方法不能继承,所以不能覆盖。
* 静态方法不存在覆盖。