搜索
首页php教程php手册PHP面向对象——访问修饰符

PHP面向对象——访问修饰符

Jul 09, 2016 am 09:10 AM
mdphp代码修饰符开源编程编程语言访问软件开发面向对象

    PHP中有三种访问修饰符,分别是:

  • public(公共的、默认)
  • protected(受保护的)
  • private(私有的)

    它们可以分别用在类的属性和方法上(类的属性和方法统称为类的成员),用来修饰类成员的访问权限。   

public(公共的、默认)

    在PHP5中如果类没有指定成员的访问修饰符,默认就是public的访问权限。

<span style="color: #008000">/*</span><span style="color: #008000">
以下两个方法声明访问权限效果相同
</span><span style="color: #008000">*/</span>
<span style="color: #0000ff">function</span><span style="color: #000000"> say(){};
publilc </span><span style="color: #0000ff">function</span> say(){};

    当类的成员被声明为public的访问修饰符时,该成员能被外部代码访问和操作。

private(私有的)

     被定义为private的成员,对于类内部所有成员都可见,没有访问限制。对类外部不允许访问。

protected(受保护的)

      protected稍微有点复杂,被声明为protected的成员,只允许该类的子类进行访问。

 

     访问权限情况表:

访问权限

public

protected

private

所有

子类

类内

以下面的例子总结:

<span style="color: #000000">php
</span><span style="color: #0000ff">class</span><span style="color: #000000"> Woman{
    </span><span style="color: #0000ff">public</span> <span style="color: #800080">$name</span> = 'lisa'; <span style="color: #008000">//</span><span style="color: #008000"> 公共的访问权限</span>
    <span style="color: #0000ff">protected</span> <span style="color: #800080">$money</span> = 3000.00; <span style="color: #008000">//</span><span style="color: #008000"> 受保护的权限</span>
    <span style="color: #0000ff">private</span> <span style="color: #800080">$age</span> = 35; <span style="color: #008000">//</span><span style="color: #008000"> 私有的访问权限</span>
    
    <span style="color: #0000ff">function</span><span style="color: #000000"> printInfo(){
        </span><span style="color: #0000ff">echo</span> <span style="color: #800080">$this</span>-><span style="color: #000000">name; 
        </span><span style="color: #0000ff">echo</span> <span style="color: #800080">$this</span>-><span style="color: #000000">money;
        </span><span style="color: #0000ff">echo</span> <span style="color: #800080">$this</span>-><span style="color: #000000">age;
    }

    </span><span style="color: #0000ff">private</span> <span style="color: #0000ff">function</span><span style="color: #000000"> secret(){
        </span><span style="color: #0000ff">echo</span> "这是个秘密!"<span style="color: #000000">;
    }
}

</span><span style="color: #800080">$woman</span> = <span style="color: #0000ff">new</span><span style="color: #000000"> Woman();
</span><span style="color: #0000ff">echo</span> <span style="color: #800080">$woman</span>->name; <span style="color: #008000">//</span><span style="color: #008000"> 公共属性可以访问
// echo $woman->money; // 受保护属性,报致命错误
// echo $woman->age; // 私有属性,报致命错误</span>

<span style="color: #800080">$woman</span>->printInfo(); <span style="color: #008000">//</span><span style="color: #008000"> 可以打印三个属性的信息,因为printInfo是公共方法

// $woman->secret(); // 私有方法,访问出错</span>

<span style="color: #0000ff">class</span> Girl <span style="color: #0000ff">extends</span><span style="color: #000000"> Woman{
</span><span style="color: #008000">//</span><span style="color: #008000"> 可以重新定义父类的public和protected方法,但不能定义private的
    // protected $money = 2000.00; // 可以从新定义</span>

    <span style="color: #0000ff">function</span><span style="color: #000000"> printInfo(){
        </span><span style="color: #0000ff">echo</span> <span style="color: #800080">$this</span>-><span style="color: #000000">name; 
        </span><span style="color: #0000ff">echo</span> <span style="color: #800080">$this</span>-><span style="color: #000000">money; 
        </span><span style="color: #008000">//</span><span style="color: #008000"> echo $this->age; // 找不到属性</span>
<span style="color: #000000">    }
}

</span><span style="color: #800080">$girl</span> = <span style="color: #0000ff">new</span><span style="color: #000000"> Girl();
</span><span style="color: #0000ff">echo</span> <span style="color: #800080">$girl</span>->name; <span style="color: #008000">//</span><span style="color: #008000"> 公共属性可以访问
// echo $girl->money; // 受保护属性,报致命错误
// echo $girl->age; // 私有属性,找不到属性</span>
<span style="color: #800080">$girl</span>->printInfo(); <span style="color: #008000">//</span><span style="color: #008000"> 显示$name,$money,找不到$age属性;</span>
?>
声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热工具

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能