Blogger Information
Blog 12
fans 1
comment 1
visits 19156
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
php面向对象---访问修饰符
黄小凡的博客
Original
689 people have browsed it

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

  • public(公共的、默认)

  • protected(受保护的)

  • private(私有的)

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

public(公共的、默认)

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

/*以下两个方法声明访问权限效果相同*/function say(){};
publilc function say(){};

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

private(私有的)

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

protected(受保护的)

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

 

     访问权限情况表:

    访问权限            public          protected      private

        所有                    ★                                   

        子类                    ★                    ★

        类内                    ★                    ★                ★


以下面的例子总结:

<?php
class Woman{
    public $name = 'lisa'; // 公共的访问权限
    protected $money = 3000.00; // 受保护的权限
    private $age = 35; // 私有的访问权限
    
    function printInfo(){
        echo $this->name; 
        echo $this->money;
        echo $this->age;
    }

    private function secret(){
        echo "这是个秘密!";
    }
}

$woman = new Woman();
echo $woman->name; // 公共属性可以访问
// echo $woman->money; // 受保护属性,报致命错误
// echo $woman->age; // 私有属性,报致命错误

$woman->printInfo(); // 可以打印三个属性的信息,因为printInfo是公共方法

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

class Girl extends Woman{
// 可以重新定义父类的public和protected方法,但不能定义private的
    // protected $money = 2000.00; // 可以从新定义

    function printInfo(){
        echo $this->name; 
        echo $this->money; 
        // echo $this->age; // 找不到属性
    }
}

$girl = new Girl();
echo $girl->name; // 公共属性可以访问
// echo $girl->money; // 受保护属性,报致命错误
// echo $girl->age; // 私有属性,找不到属性
$girl->printInfo(); // 显示$name,$money,找不到$age属性;
?>

转载自 http://www.cnblogs.com/giantpanda/archive/2012/11/08/2760074.html


Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post