zoukankan      html  css  js  c++  java
  • 方法的覆盖

    我们先创建一个动物类

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

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

  • 相关阅读:
    Javascript小技巧
    VIM
    interview experience
    HTML5
    代码实践
    git clone 速度慢的解决办法
    vscode 找不到相对目录文件的解决办法
    python基础 13 类命名空间于对象、实例的命名空间,组合方法
    python 基础 12 初识类,类方法,类属性
    python 基础 11 带参数装饰器与递归函数
  • 原文地址:https://www.cnblogs.com/longlonglonglong/p/10902313.html
Copyright © 2011-2022 走看看