php类覆盖(override)重写和最终类,最终方法

2025-09-24 07:27:34

1、1.含义:

一个子类继承了父类的特征信息(私有的继承不了),但又自己来重新定义父类继承给自己的特征信息,这种现象就称为“覆盖”(重写)——override。

先考察一个下级使用上级类显示信息而不“完全”的例子:

php类覆盖(override)重写和最终类,最终方法

2、2.于是,我们在子类中,“亲自”来定义一个显示信息的方法,该方法跟父类的方法同名:

(同名的目的可以认为“做同样的事情”):

php类覆盖(override)重写和最终类,最终方法

3、3.该代码明显有2行是跟父类的同名方法所做的事情是一样的,则改进如下:

php类覆盖(override)重写和最终类,最终方法

4、4.重写的基本要求:

访问控制权限:下级类重写上级类的同名属性或方法时,所使用的访问控制修饰符“不能更狭小”,即:

上级是public,下级只能是public

上级是protected,下级只能是protected和public

上级是private,下级:此时覆盖不了,

方法覆盖的时候,下级方法的参数要求跟上级方法的参数“一致”:

特例:构造方法也可以重写,但此时不要求参数一致。

私有属性和私有方法的重写问题:私有属性和方法都不能覆盖,但其实子类可以定义跟父类私有的同名属性或方法。只是当作一个自身的新的属性或方法来看待而已

php类覆盖(override)重写和最终类,最终方法

1、1.最终类final  class:

在定义一个类的时候,在class关键字前面使用final关键,则表示该类“不可继承”(禁止继承);

如下:

final  class  类名{

//类成员定义。。。。

}

php类覆盖(override)重写和最终类,最终方法

2、2.最终方法

就是在方法定义的前面,使用关键字final,表示该方法“不可覆盖”——禁止覆盖。

php类覆盖(override)重写和最终类,最终方法

1、1.工厂模式

其实,就是希望有这样一个类:

这个类被当做一个“工厂”,其能够源源不断地(按需)生产“产品”(对象);

按需:就是,指定要生产什么类的对象,它就能够生产该类的对象;

即:

这个类(我们要设计的类比如A),给它一个“类名”(其他类比如B),就会生该类(B)的对象。

php类覆盖(override)重写和最终类,最终方法

2、2.单例模式

设计目标:

设计一个类,这个类,要能够满足这种需求:该类“无论如何”,都只能实例化出一个对象;

php类覆盖(override)重写和最终类,最终方法

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢