php的类继承extends及重写方法

2019-12-25  本文已影响0人  PENG先森_晓宇

子类怎么算重写父类方法?

子类可以覆盖父类的属性和方法,当子类中出现和父类中同名的属性或者方法即为重写(覆盖),重写父类方法时要注意必须和父类方法的参数也要一致,方法修饰符可以不一样

父类中private会被子类继承吗?
首先在子类中是肯定访问不到父类中的private属性和方法的,那么就是子类不继承父类的private属性和方法呗。

答案是错的。

必须明确:private,publicprotected这几个关键字,和继承一毛钱的关系都没有。人家叫做“可见性(Visibility)”。基类不能控制自己的所有成员都被子类继承走,但可以约束某些被继承的的成员(private),在子类中的不可见。

从“拥有”这个角度来说,子类是基类的套壳,基类的一切当然都在子类中“存在”,只是从子类的角度能不能“看得到”而已。也就是说父类中的一切都会被子类所继承,只不过私有成员在子类中看不到而已。

如下图(蓝色箭头部分),private member肯定存在在子类的存储空间中,也就是说肯定被子类继承到了。但子类新增的方法就是访问不到

image

这个事情从架构设计这个意义上,其实是很容易说清楚的。一个子类必须遵守基类的所有特征,然后在其上做出增补和扩充。而如果基类的所有成员都开放给子类随便看、随便改,基类的本来特征可以随便拆掉,那么还要继承做什么呢?

在实际工程中,基类的私有成员,有俩个作用

上一篇 下一篇

猜你喜欢

热点阅读