PHP 类的继承 与 对象的重载
来来来,先了解几个概念:1,基类:比较大的类。(例如 汽车);
2,子类:具有很多相同的属性和方法,可以采用继承基类的属性和方法;
写法:
class Lanniao extends Car
{
// 这样的取值有问题parent:: 属性名是错误的, 应该是
// public $amm = $this->name;
function __construct(){
print '进入了子类 }
function abc(){
$ab = parent::showShop();
$ac = parent::showPop();
echo '<br/>子类访问测试——————'.$ab;
echo '<br/>子类访问测试——————'.$ac; // 私有属性也可以这么访问 但是直接访问不行
}
}//继承了 car 父类
啥是重载呢?
重载---------就是童泰创建属性和方法,通过魔术方法来实现【别问我啥是魔术方法 :参考文献: http://www.php.net/manual/zh/language.oop5.magic.php】
类与对象的重载参考文献:http://www.php.cn/php-weizijiaocheng-392407.html
1.属性的重载
class Car
{
private $arr= array();
public function __set($key,$val){
print '进入了子类 $this -> ary[$key] = $val ;
}
public function __get($key){
if(isset($this->ary[$key])){
return $this->ary[$key];
}
return null;//后面省略两个判断
}
}
$car = new Car();
$car-> name ="汽车"; //name属性动态创建并且 赋值
echo $car->name ;
//上述代码有错误 待检测
总结:属性的重载通过 __set , __get ,__isset ,__unset 来分别实现对不存在属性的赋值,读取,判断属性是否设置,销毁属性
方法的重载:
class Car
{
public $speed = 0;
public function __call($name,$args){
if($name == 'speedUp'){
$this ->speed +=10;
}
}
}
$car = new Car();
$car-> speedUp();
echo $car ->speed;
// 总结:方法的重载通过 __call 来实现,当调用不存在的方法,将会转为参数调用call 方法, 当调用不存在的静态方法,贼会调用__call static[我怎么感觉我笔记本上少了一个]
?>
页:
[1]