【PHP7 面向对象 笔记二】类的修饰符

一、使用场景

访问修饰符 本类 父类 类外
public (公有的)
protected(受保护的) ×
private(私有的) × ×

public(公有):公有的类成员可以在 任何地方 被访问。(例:你的名字大家都可以知道)
protected(受保护):受保护的类成员则可以被其自身以及 子类父类 访问。(例:你家的财产,你和你爸都可以拥有)
private(私有):私有的类成员则只能被其定义所在的类(即 本类)访问。(例:你的私房钱,只有你自己知道)


二、举例

1) 直接访问
class Animal{
    public $name = '小狗';
    public $length;
    protected $color = '白色';
    private $hair = '毛茸茸';
}
$obj = new Animal();
var_dump($obj->name);
echo '<br>';
var_dump($obj->color);
echo '<br>';
var_dump($obj->hair);

运行结果:

访问修饰符

注:我们虽然无法通过对象在外部访问到 protectedprivate 修饰的属性或方法,但是我们可以在对象的方法中,基于对象的访问来访问到里面的属性和方法。$this代表当前实例化的对象(此处$thisAnimal类)

2) 解决不能在类外访问 protectedprivate定义的属性和方法(在类的方法中,用$this
class Animal{
    public $name = '小狗';
    public $length;
    protected $color = '白色';
    private $hair = '毛茸茸';

    public function all()
    {
        $color = $this->color;
        $hair = $this->hair;
        return $color.$hair;
    }
}
$obj = new Animal();
var_dump($obj->name);
echo '<br>';
var_dump($obj->all());

运行结果:

在类中访问用$this

3) 在子类中使用父类中的方法
class Animal
{
    public $name = '小狗';
    public $length;
    protected $color = '白色'; // 在子类与父类中使用
    private $hair = '毛绒绒'; // 在本类中使用

    public function all()
    {
        $color = $this->color;
        $hair = $this->hair;
        return $color.$hair;
    }

    public function run()
    {
        return '奔跑';
    }
}

/*
 * class Chu
 * extends 继承的关键字
 * 被继承的为父类,继承的为子类
 * 子类一旦继承父类后,可以使用当中修饰符满足的方法和属性
 */ 
class Chu extends Animal
{
    public function get()
    {
        $color = $this->color;
        $hair = $this->hair;
        return $color;
    }
}
$obj = new Chu();
var_dump($obj->get());
echo '<br>';
var_dump($obj->run());

运行结果:

子类使用父类中的方法和属性

注:子类可以使用父类中 publicprotected 所修饰的属性和方法,但是不可以使用 private所修饰的方法(private所修饰的方法,只能在本类中使用).

猜你喜欢

转载自blog.csdn.net/studyphp123/article/details/82528456
今日推荐