PHP 面向对象 继承

继承关键词:extends

  1. class A{
  2. private $n;
  3. protect $m;
  4. public function GetName($k){
  5. return strtolower($k);
  6. }
  7. }
  8. class B extends A{
  9. public function GetName($k){
  10. return "B类返回".$k;
  11. }
  12. }

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() 方法,该方法就像构造函数一样,是在被克隆的时候调用的,里面可以定义自己在类被克隆时要初始化的属性及方法.