PHP基础学习day5(继承)

来源:互联网 发布:淘宝退款写了假冒品牌 编辑:程序博客网 时间:2024/06/16 06:16

继承的时候跟java一样,继承下来的只能继承父类的public和protected属性和方法继承下来


子类最多只能继承一个父类,如果想让子类C继承多个父类中的属性和方法,那么只能采用多层继承,即让B继承A,然后C再继承B,这样C中就有了A类和B类中的属性和方法。

比如:

class A{               public $a = 1;           }           class B extends A {               public $b =2;           }           class C extends B{               public $c =3;               function fn(){                   echo $this->a;               }           }           $c = new C();           $c->fn();

如果我们要希望调用父类的 构造方法或者是其他的(public / protected)方法:

①类名::方法名()②parent::方法名()

例如:

class B {               public $b =2;               public function fn(){                   echo "我是B类<br>";               }           }           class C extends B{               public $c =3;               function fn(){                   echo "我是C类<br>";                   B::fn();               }           }           $c = new C();           $c->fn();


介绍魔术方法:__call():

当定义的类中,调用没有存在的函数的时候,就会自动调用魔术方法__call
比如:
class C{               public $c =3;               public function test(){                   echo "调用了魔术方法";               }               public function __call($name, $arguments)               {                   if($name=="test1"){                       $this->test();                   }                   // TODO: Implement __call() method.               }           }           $c = new C();           $c->test1();

在C类中,没有test1这个方法,因此调用了__call方法,如果调用的函数名为test1那么,就会自动调用test方法。
可以利用这个魔术方法来实现PHP中的重载功能。。。。(虽然听起来很滑稽(#滑稽脸))
意思就是:用一个不存在的函数名调用两个不同的函数。。。。(看起来更滑稽)

下面再来看几个魔术常量:
class C{               public $c =3;               public function test(){                   echo "调用了魔术方法";                   echo "<br>".__FILE__;                   echo "<br>".__DIR__;                   echo "<br>".__METHOD__;               }               public function __call($name, $arguments)               {                   var_dump($arguments);                   if($name=="test1"){                       $this->test();                   }                   // TODO: Implement __call() method.               }           }           $c = new C();           $c->test1(2);









原创粉丝点击