含义:
一个子类继承了父类的特征信息(私有的继承不了),但又自己来重新定义父类继承给自己的特征信息,这种现象就称为“覆盖”(重写)——override。
先考察一个下级使用上级类显示信息而不“完全”的例子:
于是,我们在子类中,“亲自”来定义一个显示信息的方法,该方法跟父类的方法同名:
(同名的目的可以认为“做同样的事情”):
该代码明显有2行是跟父类的同名方法所做的事情是一样的,则改进如下:
重写的基本要求:
访问控制权限:下级类重写上级类的同名属性或方法时,所使用的访问控制修饰符“不能更狭小”,即:
上级是public,下级只能是public
上级是protected,下级只能是protected和public
上级是private,下级:此时覆盖不了,
方法覆盖的时候,下级方法的参数要求跟上级方法的参数“一致”:
特例:构造方法也可以重写,但此时不要求参数一致。
私有属性和私有方法的重写问题:私有属性和方法都不能覆盖,但其实子类可以定义跟父类私有的同名属性或方法。只是当作一个自身的新的属性或方法来看待而已