博客列表 >类声明,类属性重载,类的继承,以及类的中常量属性与静态成员的访问2018/9/03

类声明,类属性重载,类的继承,以及类的中常量属性与静态成员的访问2018/9/03

南风的博客
南风的博客原创
2018年09月09日 17:59:35620浏览

实例

<?php
/**
 * 类的声明与实例化
 * */

//用关键字class声明一个类
class Demo1
{

}

//用关键字new实例化一个类
$demo1=new Demo1();

//给当前对象添加一些属性和方法
$demo1->name='小王';
$demo1->sex='男';
$demo1->hello=function (){
    return '我说一个自定义的类方法';
};
//使用对象符:->来访问对象中的成员(属性和方法)
echo $demo1->name,':',$demo1->sex,'<br>';
//正确的调用方式,对象方法应该以回调的方式运行
echo call_user_func($demo1->hello);

运行实例 »

点击 "运行实例" 按钮查看在线实例

实例

<?php
/**
 * 类常量,对象初始化,属性的重载
 * 1. 类常量可用来创建对象之间的共享数据
 * 2. 对象初始化: 用构造方法实现,创建对象之前会自动调用,完全对象的一些初始化工作
 * 3.属性重载:在类的外部访问不存在或者无权限访问的属性时,会自动触发此类方法调用
 *  属性重载涉及四个方法:__get(),__set(),__isset(),__unset()
 */
//父类
class test
{
    //属性常量
    const PAGE_NAME='WELCOME TO HANGZHOU';
    private  $name;
    private  $age;

    public  function  __construct($name,$age)
    {
        $this->name=$name;
        $this->age=$age;
    }
    public function __get($name)
    {
        return $this->name;
    }
    public  function  __set($name, $value)
    {
        // TODO: Implement __set() method.

        return $this->$name=$value;
    }
    public function  showResult()
    {
        return '我爱你,中国!';
    }

}
class  show extends  test{

    private  $sex;
//    子类构造函数
    function  __construct($name, $age,$sex='男')
    {
        //父类的构造方法
        parent::__construct($name, $age);
        $this->sex=$sex;
    }
}
echo  '父类类调用';
$result=new test('小红',12);
//方法重载设置值
$result->name='小军';
echo  $result->name;
echo  '<hr>';

echo  '子类调用';

$show=new show('小米','55');

echo   '姓名:',$show->name='小红'.'<br>';
echo  '性别:',$show->sex='女';

echo '<br>'. '子类调用父类方法','<br>';
//子类调用父类方法

echo $show->showResult();

运行实例 »

点击 "运行实例" 按钮查看在线实例

实例

<?php
/**
 * 3,类常量与类属性的重载
 */

class lianxi1{

    //定义一个常量变量
    const  TITTLE_NAME='WELCOME TO MY HOME!';
    //定义三个变量,分别访问范围府为public private ,protected
    public  $name;
    private  $age;
    protected  $sex;

    //构造函数,类加载的时候进行初始化变量和方法
    public  function  __construct($name,$age,$sex='男')
    {
        $this->name=$name;
        $this->age=$age;
        $this->sex=$sex;
        $this->show();
    }
    function  show()
    {
        return  '姓名:'.$this->name.'年龄:'.$this->age.'性别:'.$this->sex;
    }
    //获取属性重载方法
    public function  __get($name)
    {
        return $this->$name;
    }
    //设置属性重载方法
    public  function  __set($name, $value)
    {
        // TODO: Implement __set() method.
        return $this->$name=$value;
    }
    // 检测属性重载方法
    public  function  __isset($name)
    {
        return isset($name)?$name:'没有访问权限';
    }
    //删除属性重载方法
    public  function  __unset($name)
    {
        if ($name='name')
        {
            unset($this->$name);
        }
        else
        {
            return false;
        }
    }

}

//调用常量方法
echo '输出常量变量:',lianxi1::TITTLE_NAME;
echo  '<hr>';
//实例化对象,设置默认的值
$result=new lianxi1('小明','20');
//var_dump($result);

//访问属性,因为属性全部被封装,所以必须通过一个统一的外部接口访问
echo  $result->show();

echo  '<hr>';
//通过创建获取属性的重载方法,从而获取变量的值
echo  '通过创建获取属性重载读取私有变量:年龄',$result->age;
echo  '<hr>';
echo  '通过创建获取属性重载读取私有变量:性别',$result->sex;
echo  '<hr>';
//通过设置属性的重载方法,从而改变变量的值
echo  '通过设置属性重载方法改变私有变量:年龄',$result->age=33;
echo  '<hr>';
//通过设置属性的重载方法,从而改变变量的值
echo  '通过设置属性重载方法改变私有变量:年龄',$result->sex='女';
echo  '<hr>';
echo  '改变年龄和性别值后:',$result->show();
echo  '<hr>';

echo  '检测变量是否存在:';
echo isset($result->name) ? '存在<br>' : '<span style="color:red">不存在</span><br>';
echo  '<hr>';

echo  '删除变量后显示:';

 unset($result->name);
unset($result->age);
unset($result->sex);
echo  '改变年龄和性别值后:',$result->show();

运行实例 »

点击 "运行实例" 按钮查看在线实例

实例

<?php
/**
 *类中静态成员的声明与访问
 */
class  test1
{
    //定义静态成员变量
    private static  $name;
    private  static $age;
    private  static  $sex;
    public static function  show()
    {
        echo '我叫:',self::$name,'今年:',self::$age,'岁,性别是',self::$sex;
    }
    public  function  __get($name)
    {
        return $name;
    }
    function  __construct($name,$age,$sex)
    {
        self::$name=$name;
        self::$age=$age;
        self::$sex=$sex;
    }
}
$a=new test1('小米','25','男');
echo test1::show();

运行实例 »

点击 "运行实例" 按钮查看在线实例


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议