玩命加载中 . . .

方法的覆盖(10.1)


方法的覆盖(override)

  1. 语法:

    public class Animal {    // 父类
        public void action() {
            System.out.println("动物在跑步!!");
        }
    }    
    public class Bird extends Animal { // 子类
        public void action() {
            System.out.println("鸟在飞行!!");
        }
    }
    public class Parrot extends Bird {    // 继承于Bird
        // 继承Bird中的方法
        // 由于Bird继承于Animal但是Bird中自身又重写了action所以Parrot类直接继承于Bird方法
    
        public void action() {
            System.out.println("鹦鹉在学人话...");
        }
    }
    public class AnimalTest {
        public static void main(String[] args) {
            /**
             * 以下是直接重写祖类中的方法
             */
            // Animal父类中的方法
            Animal animal = new Animal();
            animal.action();
            // bird继承Animal中action方法并重写action方法
            Bird bird = new Bird();
            bird.action();
            /**
             * 以下是间接继承子类中的方法
             */
            // 由于Bird继承于Animal但是Bird中自身又重写了action所以Parrot类直接继承于Bird方法
            Parrot parrot = new Parrot();
            parrot.action();
        }
    }
    
  2. 方法的覆盖又被称为方法重写,英语单词: override【官方的】/overwrite

  3. 什么时候使用方法重写?

    • 当父类中的方法已经无法满足当前子类的业务需求,
    • 子类有必要将父类中继承过来的方法进行重新编写,
    • 这个重新编写的过程称为方法重写/方法覆盖。
  4. 什么条件满足之后方法会发生重写呢?【代码满足什么条件之后,就构成方法的覆盖呢?】(❌重点)

    • 方法重写发生在具有继承关系的父子类之间

    • 方法重写的时候:

      返回值类型相同

      方法名相同

      形参列表相同

    • 访问权限不能更低,可以更高

    • 抛出异常不能更多,可以更少。【异常之后才能解释】

  5. 建议方法重写的时候尽量复制粘贴,不要编写,容易出错,导致没有产生覆盖

  6. 注意:(❌重点)

    • 私有方法不能继承,所以不能覆盖
    • 构造方法不能继承,所以不能要盖
    • 静态方法不存在覆盖【多态之后解释】
    • 覆盖只针对方法,不谈属性

文章作者: 小靳同学
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 小靳同学 !
评论
 上一篇
Java面向对象(01) Java面向对象(01)
Java命名规范命名规范 项目名全部小写(小驼峰) 包名全部小写(小驼峰) 类名首字母大写(大驼峰),如果类名由多个单词组成,每个单词的首字
2021-06-08
下一篇 
多态(Polymorphism)(11) 多态(Polymorphism)(11)
多态(Polymorphism)关于java语言当中的多态语法机制:【只是多态的基础语法,多态的作用在后续的例子中讲解。】 Anima1、C
2021-06-08
  目录