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