PHP类中的访问修饰public, protected, private以及误解

在PHP的类中可以使用public, protected, private来修饰成员属性和成员方法。

权限从大到小:public > protected > private

public:
本类内部/本类对象,子类内部/子类对象 可以访问

protected:
本类内部,子类内部 可以访问。

private:
本类内部 可以访问。

特别注意:
很多人总结说父类可以访问子类,其实这是错误的,继承是单向的,父类根本就不可能访问到子类,再说了继承自父类的的子类可能很多,它是无法辨别的。

但是为什么在父类的方法中可以访问到子类的public/protected,那是一种误解,实际上还是子类调用自己而已。例如:

class father {
    public function a(){
        $this->b();
    }
}

class son extends father {
    public function b(){
        echo 'Haha'.PHP_EOL;
    }

    public function c(){
        $this->a();
    }
}

(new son())->c();// 可以访问的
(new father())->a();// 报错

分析一下:
son继承了father,所以完整的son可以看成

class son extends father {
    public function b(){
        echo 'Haha'.PHP_EOL;
    }

    public function c(){
        $this->a();
    }

    public function a(){
        $this->b();
    }
}

那么a方法调用b方法,其实就是son类的内部调用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值