Ps1:在子类中,与父类中的字段具有相同名称的字段为隐藏字段,即使它们的类型不同。
Ps2:从上述定义中,我们可以知道成员字段不能像方法一样被重写。当子类定义具有相同名称的字段时,该子类仅声明一个新字段。超类中的字段是隐藏的。它没有被重写,所以它不能被多态访问。
Ps3:在子类中,父类中的字段不能通过其简单名称引用。相反,该字段必须通过父类访问。一般来说,我们不建议隐藏字段,因为它使代码难于阅读。
Ps4:重写:访问修饰符的限定范围大于等于父类方法(速记:父母永远希望孩子要青出于蓝而胜于蓝)。
Ps5:重写:返回值问题,Java 5或者以前,必须一样,Java 7 & Java 8可以不同,但是必须是父类返回值的派生类(返回值不同的特殊情况:可以返回父类本身以及子类类型)。
案例分析
Ps:这里父类叫“Animal”,子类叫“Cat”,父类已经写好了一个一样的“say”方法,在这里通过注解@Override检测,会发现编译报错,提示父类没有这样的方法,应验了静态方法不能被重写,只起到隐藏父类的静态方法作用!