PHP类中public、protected、private的区别

在PHP类中public、protected、private是我们在类中规定我们的成员变量、方法的可见性(数据隐藏),也就是说我们可以在PHP中,用public、protected、private来控制类变量和函数的访问权限。

PHP类中public、protected、private的区别!php类中public、protected、private实例代码!

在PHP类中public、protected、private是我们在类中规定我们的成员变量、方法的可见性(数据隐藏),也就是说我们可以在PHP中,用public、protected、private来控制类变量和函数的访问权限。

PHP类中public、protected、private的区别插图
PHP类中public、protected、private的区别

那么public、protected、private在PHP类中有什么区别?public、protected、private的优先级又是怎么样的呢?

下面将从public、protected、private的概念及如何调用、public、protected、private的数据可见性优先级顺序及一个PHP类中public、protected、private的使用实例代码来记载本文。

public、protected、private的如何调用及区别

public:是我们在PHP中是公共成员、默认的、类的内外部可以调用。

private:是PHP中类的私有成员,在类中定义了private之后将不能在类的外部访问,只能在所属类的内部进行访问,但我们可以通过在这个类的内部新建一个方法进行对类的私有成员的调用。

protected:是PHP中类的保护成员,不能在类的外部访问,但是可以被子类和父类访问,同时protected和private一样也可以通过在这个类的内部新建一个方法对类的保护成员进行调用。

  • public是公共的类成员变量,不管在类的内部还是外部,我们都可以成功调用;
  • protected是类的保护成员,我们可以在类的成员方法和子类继承父类后也可以调用,但不能直接将父类实例化后调用输出;
  • private是类的私有成员,我们只能在类的内部和类成员方法中调用输出,在类外部和继承父类的子类中都不能使用。

public、protected、private数据可见性排序

根据上面对于public、protected、private的如何调用及区别的记载,public、protected、private数据可见性排序,我们可以得出以下的推断:

public>protected>private;

那么这种推断是否正确呢?我们通过下面的一个PHP类中public、protected、private的使用实例代码,来验证我们以上的推断。

PHP类中public、protected、private的使用实例代码

public、protected、private能否在类实例化后直接调用:

<?php
class Mylove {
    //创建一个公共成员变量;
    public $name = '浩沐';
    //创建一个私有成员变量;
    private $people = 'Godmu';
    //创建一个受保护的成员变量;
    protected $food = '小天';
}
//实例化Mylove;
$love = new Mylove();
//输出公共成员变量;
echo $love->name;
echo '<hr>';
//输出受保护的成员变量;
echo $love->food;
echo '<hr>';
//输出私有成员变量
echo $love->people;
?>

当我们实例化类Mylove之后,我们可以输出public的成员变量的值,当我们输出输出受保护的成员变量的时候报错了,所以验证了我们上面记载的类的保护成员,不能在类的外部访问。同样的,我们把echo $love->people;放在echo $love->food;之后,同样会报Fatal error错误。

调用类内部方法能否调用protected、private的成员变量实例代码:

<?php
class Mylove {
    //创建一个公共成员变量;
    public $name = '浩沐';
    //创建一个私有成员变量;
    private $people = 'Godmu';
    //创建一个受保护的成员变量;
    protected $food = '小天';
    function show_love(){
        echo $this->people.'<br>';
        echo $this->food;
    }
}
//实例化Mylove;
$love = new Mylove();
//调用类的成员方法;
$love->show_love();
?>

在上述的代码块中,我们在类中将私有成员变量、受保护的成员变量在成员方法中调用,我们将类实例化之后,确实可以调用类成员方法将类中私有成员变量、受保护的成员变量成功输出出来。

子类继承父类使用protected、private实例代码:

<?php
class Mylove {
    //创建一个公共成员变量;
    public $name = '浩沐资源网';
    //创建一个私有成员变量;
    private $people = 'Godmu';
    //创建一个受保护的成员变量;
    protected $food = '小天';
    function show_love(){
        echo $this->people.'<br>';
        echo $this->food;
    }
}

class lovely extends Mylove{
    function show_love(){
        echo '之类继承父类之后在成员方法中使用private、protected成员变量:<br>';
        echo $this->food.'<br>';
        echo $this->people;
    }
}
//实例化Mylove;
$love = new lovely();
//调用类的成员方法;
$love->show_love();
?>

上面实例代码中,我们让子类继承父类,然后在子类的成员方法中调用父类的protected、private成员变量,可以看到虽然private成员变量调用的时候没有报错,但是没有调用出数据来,而protected成员变量却成功调用出来了。

经过上面3个实例代码的验证,充分证明了我们上述对public、protected、private的概念及如何调用、public、protected、private数据可见性排序都是正确的,同时通过多写写实例代码,将会加深我们对于public、protected、private这些成员变量的使用。

温馨提示:
1.本站大部分内容均收集于网络!若内容若侵犯到您的权益,请发送邮件至:duhaomu@163.com,我们将第一时间处理!
2.资源所需价格并非资源售卖价格,是收集、整理、编辑详情以及本站运营的适当补贴,并且本站不提供任何免费技术支持。
3.所有资源仅限于参考和学习,版权归原作者所有,更多请阅读网站声明

给TA赞赏
共{{data.count}}人
人已赞赏
编程技巧

html字体怎么添加颜色?Html字体颜色如何设置实例

2016-5-31 9:00:00

编程技巧

Windows服务器和Linux服务器有什么不同?

2016-6-3 9:00:00

0 条回复 A文章作者 M管理员
----《》
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索