最新消息:欢迎加入小松的QQ群一起讨论一起学习,搜索页面修改成lua+ElasticSearch,使用php这个页面速度相对慢一点,优化之后速度杠杠的,如有问题请加群联系我

php private public protected 有什么差别

PHP 1167浏览 0评论

在面试的时候发现面试的同学都说知道oop思想,但是连基本的private public protected 有什么差别都回答不上来
这里来解释一下
public:方法或者属性在任何作用域都可以访问到,而且这是默认的,如果没有为一个属性或方法指定访问修饰符,它将是public。
protected:方法或者属性只能从类或者继承类的一个成员中访问到。
private:方法或者属性只能从类的一个成员中访问到,而且无法从继承类的成员中访问到。经过private便签标记的方法或者属性可以在继承类中重新定义。每一个类只能看到它自己定义的私有方法。

private public protected oop思想

说的比较抽象,下面举个例子

例子1:

<?php
class Test1
{
 public $public = 'Public';
 protected $protected = 'Protected';
 private $private = 'Private';
 public function printHello()
 {
 echo $this->public;
 echo $this->protected;
 echo $this->private;
 }
}
$obj = new Test1();
echo $obj->public; // 输出Public
echo $obj->protected; // 保护的属性都不能直接引用,显示错误::Fatal error: Cannot access protected property Test1::$protected
echo $obj->private; // 私有的属性都不能直接引用,显示错误:Fatal error: Cannot access private property Test1::$private
$obj->printHello(); // 正确输出:PublicProtectedPrivate;

例子2:

<?php
class Test1
{
 public $public = 'Public';
 protected $protected = 'Protected';
 private $private = 'Private';
 public function printHello()
 {
 echo $this->public;
 echo $this->protected;
 echo $this->private;
 }
}
class Test2 extends Test1
{
 // 我们可以重新定义公共和受保护的方法,但不能是私人
 protected $protected = 'Protected2';
 function printHello()
 {
 echo $this->public;
 echo $this->protected;
 echo $this->private;
 }
}
$obj2 = new Test2();
echo $obj2->public; // 正确输出:Public
echo $obj2->private; // 私有属性可以重新定义,但MyClass2里面没有定义,输出错误:Notice: Undefined property: Test2::$private意思是说没有定义
#echo $obj2->protected; // 受保护的属性不能重新定义输出错误:Fatal error: Cannot access protected property Test2::$protected 
$obj2->printHello(); // 输出:PublicProtected2Notice: Undefined property: Test2::$private
QQ交流群:136351212(满) 455721967

如无特别说明,本站文章皆为原创,若要转载,务必请注明以下原文信息:
转载保留版权:小松博客» php private public protected 有什么差别
本文链接地址:https://www.phpsong.com/72.html

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
木有头像就木有JJ!点这里按步骤申请Gravatar头像吧!