博客列表 >类的封装集成

类的封装集成

藍錄的博客
藍錄的博客原创
2018年09月11日 16:15:08685浏览

实例

<?php
/**
 * 对象的三大特征: 封装,继承,多态
 * 对象三要素之一: 封装
 *
 * 1.[封装]是指类中成员的访问进行限制,从而实现类的封装;
 * 2.类成员包括二类: 类属性, 类方法
 * 3.类成员的访问限制符(3p): public, protected, private
 * 4.类成员的访问应该通过公共接口(方法)进行,提高安全性
 * 5.类中成员可以使用 $this->成员 直接访问
 * 6.$this 是对象伪变量,代表着当前类的一个实例对象
 */

class Demo2
{
    //声明类属性,属性值必须是字面量,不能是变量或表达式
    public $name;   // 未初始化,默认值为null
    public $salary = 6800; // public 公共属性
    //将类属性进行封装,外部不能访问
    protected $sex = 0;   // protected 受保护的成员,仅限本类或本类的子类访问,0男1女
    private $age = 33;  // private 私有成员,仅限本类访问

    //声明类方法:创建公共接口,供外部访问类中访问受限成员
    public function getSex()
    {
        //返回语义化的性别名称
        return ($this->sex == 0) ? '男' : '女';
    }

    //创建$age属性的公共访问接口
    public function getAge()
    {
        // 男性直接输出年龄,女性拒绝查看
        return  ($this->sex == 0) ? $this->age : '保密';
    }
}

//类的实例化
$demo2 = new Demo2();

//测试属性默认值
var_dump(is_null($demo2->name));    // ($demo2->name === null) 返回同样结果: true

//查看公共属性 salary
echo $demo2->salary,'<br>';

//echo $demo2->sex,'<br>'; // protected 成员,类外部不可访问
//echo $demo2->age,'<br>'; // private 成员,类外部不可访问

echo '性别是: ', $demo2->getSex(),'<br>';  // 根据标志,返回语义化的中文
echo '年龄是: ', $demo2->getAge(),'<br>';  // 男就显示年龄,女孩子的年龄是保密的

运行实例 »

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

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