虚岁39岁的PHP程序员再温PHP之基础学习4。面向对象

作者: jiukeshuju 分类: PHP 发布时间: 2019-12-10 21:31
<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2019-12-06
 * Time: 22:07
 */

/*
 * 人的类
 *  眼睛,嘴巴,手,脚,性器官
 *  看书,吃饭,拿东西,走路
 *  extends 男人 女人
 * */

class Ren{
//final class Ren{   //如果是final  这个父类无法继承
    public $yanjing;
    public $zuiba;
    public $shou;
    protected $jiao;
    private $xingqiguan;
    static $num="100"; //静态数量
    const NAME="吴垒"; //常量

    function __construct($yanjing="",$zuiba="",$shou="说话",$jiao="",$xingqiguan="性器官"){
        $this->yanjing=$yanjing;
        $this->zuiba=$zuiba;
        $this->shou=$shou;
        $this->jiao=$jiao;
        $this->xingqiguan=$xingqiguan;
    }

    public function ks(){
//    final public function ks(){   //如果是 final function 方法 无法被重载 继承
        echo self::$num; //类内调用静态属性
        echo $this->yanjing."正在看书";
    }

    protected function zl(){
        echo $this->jiao."正在走路";
    }

    private function za(){
        echo $this->xingqiguan."作爱";
    }

    function __set($name,$val){
        $this->$name=$val;
    }

    function __get($name){
        $this->$name;
        echo "你访问的私有属性无法问";
    }

    function __isset($name){
        isset($this->$name);
        echo "这个属性存在";
    }

    function __unset($name){
        unset($this->$name);
    }

    function __toString(){
        echo "自动属出对象则自动调用这个方法";
    }

    function __call($name,$val){
        echo "调用方法不存在";
    }

    function __autoload($name){ //自动加载类
        include(strtolower($name)).".class.php";
    }

    function __sleep(){
        echo "对象串行化,自动调用";
    }

    function __wakeup(){
        echo "反对象串行化,自动调用";
    }

    public function __destruct(){
        echo "<br>";
        echo "<br>";
        echo "<br>";
        echo "注销类.....";
    }
}

class Nanren extends Ren{
    //子类可以访问父类的 public protected 不可以访问private
    private $jiba;

    public function __construct(){
        parent::__construct();
        $this->$jiba;
    }

    public function zl(){
        parent::zl();
        echo "一会回家";
    }
}

class Nvren extends Ren{
    //子类可以访问父类的 public protected 不可以访问private
    public $lufang;
}

//开始这是一条美丽的分隔线============================

/*
final class Tongxinglian extends Ren{
    static $name;
    const YAOPIN;

    final function hz(){
       echo self::name."正在化妆";
   }
   static function aizibing(){
       echo "同性变有爱滋病";
   }
}
*/
//结束这是一条美丽的分隔线============================

//开始这是一条美丽的分隔线============================

//接口是一种规范,类中有一个抽象方法,就是抽象类。
/*
abstract class Cxl{ //抽象类  不能被实例化
    public $name;
    public $tow;
    public $son;

    function __construct(){
        $this->name=$name;
        $this->tow=$tow;
        $this->son=$son;
    }

    abstract function say(); //抽象方法
    abstract function bay();
}

//抽象类只能被子类继承使用。不能被实例化。
class Cxla extends Cxl{
    function say(){
        //方法体
    }
    function bay(){
        //方法体
    }
}
*/
//结束这是一条美丽的分隔线============================

//开始这是一条美丽的分隔线============================

//接口是一种规范,只能继承使用。
/*
interface One{
    const NAME="吴垒";
    function say();
    function scc();
}

class wty implements One{
    function say(){
        //方法体
    }
    public scc(){
        //方法体
    }
}
*/
//结束这是一条美丽的分隔线============================

//父类的实例化

$ren=new Ren();
//$ren1=clone $ren; //对象的复制
//echo $ren; //echo 对象,则自动调用__toString()

//$renlize = serialize($ren); //对象串行化,写入文件,反串行化。
//file_put_contents("file.txt",$renlize);
//$renlizeop = file_put_contents("file.txt");
//$renlize = unserialize($renlizeop);
//$renlize->ks();
//var_dump($renlize);

//echo $ren->shou; //访问父类公有的属性
//$ren->jiao; //访问父类受保护的属性,直接调用__get()方法
//$ren->xingqiguan; //访问父类私有属性,直接调用__get()方法

//echo Ren::NAME; //访问常量属性
//echo Ren::$num; //访问静态属性

//$ren->ks(); //访问父类公有的方法
//$ren->zl(); //访问父类受保护的方法,报错;
//$rem->za(); //访问父类私有的方法,报错;
//$ren->aaa(); //调用的方法不存在,则自动调用方法 __call($name,$val)

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!

发表评论

电子邮件地址不会被公开。 必填项已用*标注