类成员访问限制与封装技术

原创 2018-11-30 11:28:08 258
摘要:<?php class Cat {     public $name;     protected $place;     private $price;     const N
<?php

class Cat
{

    public $name;
    protected $place;
    private $price;

    const NAME = '猫猫';

    //构造方法
    public function __construct($name,$place,$price)
    {
        $this->name = $name;//$this伪变量,访问非静态成员
        $this->place = $place;
        $this->price = $price;
    }

    public function getPlace()
    {
        $res = $this->place;
        if ($this->name == 'kitty') {
            $res = '人造猫还有祖籍?别逗了';
        }
        return $res;
    }

    public function getPrice()
    {
        $res = $this->price;
        if ($this->name == 'kitty') {
            $res = '不详';
        }
        return $res;
    }

    private function helloKitty($a){
        echo $a.self::NAME,"<br>";//self用作类中引用类名
        // self后面必须使用范围解析符::(双冒号)来访问类公共成员(如类常量和静态成员)
    }

    public function getHello($b='你好!'){
        $this->helloKitty($b);
    }
}

$cat_1 = new Cat('美短','美国',2000);
echo '姓名:', $cat_1->name, '<br>';
echo '祖籍:', $cat_1->getPlace(), '<br>';//私有变量访问接口
echo '售价:', $cat_1->getPrice(), '<br>';
$cat_2 = new Cat('kitty','美国',2000);
echo '姓名:', $cat_2->name, '<br>';
echo '祖籍:', $cat_2->getPlace(), '<br>';
echo '售价:', $cat_2->getPrice(), '<br>';

// echo $cat_2->helloKitty(); 私有方法无法访问
echo $cat_2->getHello();//私有方法访问接口
echo $cat_2->getHello('好棒!');

运行结果:

姓名:美短
祖籍:美国
售价:2000
姓名:kitty
祖籍:人造猫还有祖籍?别逗了
售价:不详
你好!猫猫
好棒!猫猫

一层层揭开神秘的面纱,感觉好爽,谢谢老师

批改老师:天蓬老师批改时间:2018-11-30 11:30:43
老师总结:类的封装, 主要是通过private和protected来实现, 对于一个类来说, 对外暴露的东西,越少越好

发布手记

热门词条