类学习记之----类中属性的重写

来源:互联网 发布:seo外包服务 编辑:程序博客网 时间:2024/06/08 04:59

<?php

class one{
  //public $yes='USA';
    public $name='one';
 public $pass='OK';
    function out(){
       echo 'hello world';
 }
}

class two extends one{
    // public $name='six';  //不能这样写:  $this->name='six';
 
 function out(){//虽然在这里重写了父类中的out()方法,但父类中的out()方法并不会受到影响,看下面的调用就知道了
    echo $this->pass;//此类中没有pass属性,于是去父类one中找
    echo"</br>";
    $this->yes='china';//只在two类中起作用,这就是所谓类的扩展
    return  $this->name='two'; }

}

 

$two=new two();
echo $two->out();
echo "</br>";
echo $two->name;
echo "</br>";

$one=new one();
$one->out();
echo "</br>";
echo $one->name;
echo "</br>";
$one->out();
echo $one->yes;
//因为one类中的属性yes被注释掉了,所以会出现错误提示

//类中属性和方法的重写就是从父类中复制出你想要的属性或者方法,在子类中,你想怎么改它的属性都不会影响到父类中的属性,当你调用子类中不存在 的属性时,则它会去父类中找看有没有你要调用的属性,如果父类中也没有,则会给出一个错误提示,除非你在调用的时候创建一个属性并赋值,这样才不会出错, 但此时你在子类中创建的属性是属于子类的,它并不会在父类中创建

//我有一个印钱机,从我这里印出来的钱,随你在钱上怎么画都不会影响这个印钱机结构,你在钱上画上一只老虎,那你钱上就会多了一只老虎(扩展),我再印下一张钱的时候,印出来的钱还是印钞机图案中原来的样子

//还有就是在重写父类中的属性或方法时,子类中的访问权限不能比父类中的属性或方法要严格,比如说父类中的方法为public而你在子类中不能为private,而且必须与父类中的属性或方法同名,参数类型和个数不作限制


?>

 
原创粉丝点击