方法的覆盖

我们先创建一个动物类

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 ()这三个都不能变

*私有方法不能继承,所以不能覆盖。
* 构造方法不能继承,所以不能覆盖。
* 静态方法不存在覆盖。

猜你喜欢

转载自www.cnblogs.com/longlonglonglong/p/10902313.html