php类覆盖(override)重写和最终类,最终方法
1、1.含义:
一个子类继承了父类的特征信息(私有的继承不了),但又自己来重新定义父类继承给自己的特征信息,这种现象就称为“覆盖”(重写)——override。
先考察一个下级使用上级类显示信息而不“完全”的例子:
2、2.于是,我们在子类中,“亲自”来定义一个显示信息的方法,该方法跟父类的方法同名:
(同名的目的可以认为“做同样的事情”):
3、3.该代码明显有2行是跟父类的同名方法所做的事情是一样的,则改进如下:
4、4.重写的基本要求:
访问控制权限:下级类重写上级类的同名属性或方法时,所使用的访问控制修饰符“不能更狭小”,即:
上级是public,下级只能是public
上级是protected,下级只能是protected和public
上级是private,下级:此时覆盖不了,
方法覆盖的时候,下级方法的参数要求跟上级方法的参数“一致”:
特例:构造方法也可以重写,但此时不要求参数一致。
私有属性和私有方法的重写问题:私有属性和方法都不能覆盖,但其实子类可以定义跟父类私有的同名属性或方法。只是当作一个自身的新的属性或方法来看待而已
1、1.最终类final class:
在定义一个类的时候,在class关键字前面使用final关键,则表示该类“不可继承”(禁止继承);
如下:
final class 类名{
//类成员定义。。。。
}
2、2.最终方法
就是在方法定义的前面,使用关键字final,表示该方法“不可覆盖”——禁止覆盖。
1、1.工厂模式
其实,就是希望有这样一个类:
这个类被当做一个“工厂”,其能够源源不断地(按需)生产“产品”(对象);
按需:就是,指定要生产什么类的对象,它就能够生产该类的对象;
即:
这个类(我们要设计的类比如A),给它一个“类名”(其他类比如B),就会生该类(B)的对象。
2、2.单例模式
设计目标:
设计一个类,这个类,要能够满足这种需求:该类“无论如何”,都只能实例化出一个对象;