PHP 面向对象 继承
继承关键词:extends
- class A{
- private $n;
- protect $m;
- public function GetName($k){
- return strtolower($k);
- }
- }
- class B extends A{
- public function GetName($k){
- return "B类返回".$k;
- }
- }
1.这里B类继承A类,如果A类有构造函数而B里没有构造函数,创建B类对象时将调用A类的构造函数,如果B类有自己的构造函数则调用自己的构造函数.
2.继承只适用于继承父类里 protect 和public 所限制的访问修饰符,对于private 修饰符不被继承.
3.子类可以重载父类里的属性,方法,当B类重载了 GetName 方法后,
$b=new B(); $b->GetName("张三") 将优先调用B类中重载的GetName()方法,如果想在子类对象中调用父类的方法时,可以使用 A::GetName("张三") 即可(前面加上 父类名::)
4.当函数前面申明 final 关键字时,子类将不能对此函数进行重载.
5.当类前面加申明 final ,此类将不能被子类继承.
6.PHP不支持多重继承,也就是说一个类只能有唯一的一个父类
7.类的对象可以使用clone 关键字克隆一个一模一样的引用副本到本地(有相同的属性和方法)
如果在克隆的时候不希望得到被克隆类相同的属性或者方法,需要在被克隆类里实现 __clone() 方法,该方法就像构造函数一样,是在被克隆的时候调用的,里面可以定义自己在类被克隆时要初始化的属性及方法.