对于成员变量来说,当子类本身具有与继承自父类的成员变量名称相同的成员变量时,便构成了成员变量的隐藏。其含义是,在子类中直接调用该成员变量时,将调用的是子类中本身具有的成员变量,而不是父类继承的成员变量。


       子类的自身方法中,若与继承过来的方法具有相同的方法名,便构成了方法的重写(或者说覆盖)。重写的主要特点是能够定义各子类的特有行为。

       

      若用父类引用指向子类对象,当父类引用调用被重写的方法时,Java将会访问被重新定义的子类中的方法。方法的调用按对象的类型调用,无论使用什么类型的引用,其调用的都是具体对象所在类中定义的方法,这与成员变量不同,成员变量按引用的类型调用

(在运行时,对于成员变量的访问系统接受的是引用类型,引用是哪个类的,系统就访问哪个类的成员。)

        引用类型决定调用哪个重载方法,而不是对象类型(注意重载和重写的区别)


       若想构成方法的重写,子类中的方法名与参数列表必须完全与被重写的父类方法相同。一旦构成重写,必须遵循如下规则。

       (1)返回类型若为基本数据类型,则返回类型必须完全相同;若为对象引用类型,必须与被重写方法返回类型相同,或派生自被重写方法的放回类型。

       (2)访问级别的限制一定不能比被覆盖方法的限制窄,可以比被覆盖方法的限制宽。

       (3)不能重写被表示为final方法。

       (4)覆盖是基于继承的,如果不能继承一个方法,则不能构成重写,不必遵循覆盖规则。