zoukankan      html  css  js  c++  java
  • 2018/01/07JAVA 基础 / 接口与继承:重写【子类继承并覆盖父类的对象方法】、隐藏【子类继承并覆盖父类的类方法】与实现类实现接口方法の区别

    重写

    方法重写/重写的定义:又叫覆盖/override,是指子类可以继承父类的对象方法/实例化方法/非静态方法,在继承后,重复提供该方法[但方法内容不一致]。方法的重写是子类覆盖父类的对象方法

    调用子类的对象方法:用指向子类对象的引用调用该子类方法。i.e.

    public static void main(String[] args) {
            Item i = new Item();
            i.effect();
             
            LifePotion lp =new LifePotion();//调用子类的对象方法
            lp.effect();//LifePotion类为Item类的子类
        }

    隐藏

    隐藏的定义:是指子类可以继承父类的类方法/静态方法,在继承后,重复提供该方法[但方法内容不一致] 。隐藏就是子类覆盖父类的类方法。

    调用子类的对象方法:直接用子类名调用子类的类方法。i.e.

    public static void main(String[] args) {
            Hero.battleWin();//直接用父类名调用父类的类方法
            ADHero.battleWin();//ADHero为Hero的子类,该行含义是:直接用子类名调用子类隐藏父类类方法后的类方法
        }

    实现类实现接口的方法  

      接口的定义:接口就像是一种约定/承诺。举例来说:

    1 public class ADHero extends Hero implements AD

      是指ADHero这个类一定可以实现AD接口中的方法。

    但是,为了看到实现AD接口内方法的效果,需要在ADHero类中重写这个对象方法。若AD中的方法为静态方法/类方法且为非空体方法,则在AD类的主方法中/实现类的主方法中想要调用AD类的方法必须用AD.方法名的形式,而调用相应的ADHero静态方法,则也必须用ADHero类的引用去调用该方法,或是ADHero类直接调用该ADHero静态方法。

    实现类的对象方法的调用:若引用类型是实现类,且引用指向的对象类型也是实现类,则可以通过该引用调用实现类的对象方法。若不一致,请参考多态

    可见,实现类实现接口方法与重写在概念上的区别是:

      1)重写是在有继承关系的两个类之间,实现类实现接口方法是在子类/实现类与接口之间。

      2)接口中的方法体为空方法体,但重写里父类中的方法体不是空方法体。

  • 相关阅读:
    【ci框架】PHP常见面试题汇总。。。
    fieldset的collapse和expand事件
    CI 学习
    Ext JS 4预览:重构和规范渲染过程()
    LAMP环境搭建过程
    Extjs中FieldSet的收缩和展开实例
    EXTJS组件化(三)----组件之间的暧昧关系
    EXTJS组件化(四)---减少你的代码
    EXTJS组件化(二)----简易的私有和公有
    EXTJS组件化(一)----建立你的思想
  • 原文地址:https://www.cnblogs.com/lijiehua/p/8232391.html
Copyright © 2011-2022 走看看