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)接口中的方法体为空方法体,但重写里父类中的方法体不是空方法体。

posted on 2018-01-07 22:00  梧桐雨与荔枝  阅读(248)  评论(0编辑  收藏  举报

导航