发布时间:2019-07-04 10:03:11编辑:auto阅读(1689)
<?php
/*
* public private protected 这些变量可见性修饰符,只是控制变量的可访问范围,与继承无关,不管属性变量用哪个关键词修饰。它都会被继承
* 而且,一个属性不管采用了哪种修饰符,它都可以被 构造函数赋值
*
*/
class Person{
public $name,$age,$sex;
private $card,$money;
public function __construct($name,$age,$sex,$card,$money){
$this->name=$name;
$this->age=$age;
$this->sex=$sex;
$this->card=$card;
$this->money=$money;
}
public function __destruct(){
//before unset this object,do some thing
echo 'object had unseted';
}
public function echo_money(){
echo 'money';
return $this->money;
}
public function __get($attr){
echo '当在对象外部直接访问,没有权限访问的属性时,这个方法被会自动执行';
echo '<br/>'.$this->name;
}
public function __set($attr,$val){
echo '当在外部给一个对象的某个不可以外部操作的属性赋值时,这个方法,自动被执行';
echo '一般来说,不应该通过这个方法给外部没有权限的访问的属性赋值';
}
public function __isset($attr){
echo '当用户在外部使用 isset() 来检测对象的某个不可以外部直接访问的属性是否存在时,这个方法会被自动调用';
}
public function __unset($attr){
echo '当用户在外部使用 unset() 对一个外部没有权限访问的属性进行毁销操作时,这个方法被 自动调用';
}
public function __call($method,$arg){
// 当调用不存在的行为时,这个会被自动执行
echo 'no had this method';
}
}
$hwp=new Person('hwp',30,'man',955888040,100);
//echo $hwp->name;
//echo $hwp->echo_money().'<br/>';
//$hwp->say();
echo '<br/>';
$hwp->money;
echo '<br/>';
echo $hwp->age;
$hwp->name='huangwenping';
echo $hwp->name;
$hwp->money=500000;
echo '<hr/>';
isset($hwp->name);
isset($hwp->money);
echo '<hr/>';
unset($hwp->name);
unset($hwp->money);
unset($hwp);
class SuperPerson extends Person {
public function __construct($name,$age,$sex,$card,$money,$height){
parent::__construct($name,$age,$sex,$care,$money);
$this->height=$height;
}
public function echo_money(){
parent::echo_money();
echo '<br/>';
echo '这个方法继承自父类,同时也在子类里覆盖了父类的方法';
}
}
$oH=new SuperPerson('huangwenping',30,'man',9558,200000,173);
$oH->echo_money();
上一篇: Java每日一题(3)
下一篇: linux下netsnmp v3 的使用
48766
47808
38585
35772
30203
26950
25984
20820
20593
18975
385°
449°
489°
498°
488°
472°
536°
599°
714°
749°