权限访问修饰符public,protected,private

来源:互联网 发布:数控英制螺纹编程实例 编辑:程序博客网 时间:2024/04/29 05:45
<?phpheader("content-type:text/html;charset='utf-8'");/*访问类型     private    protected   public同一个类中    √          √          √类的子类中                √          √所有的外部成员                        √*/// Define MyClassclass MyClass{    public $public = 'Public';    protected $protected = 'Protected';    private $private = 'Private';    function printHello()    {        echo $this->public;        echo $this->protected;        echo $this->private;    }}$obj = new MyClass();echo $obj->public; // Worksecho $obj->protected; // Fatal Error  只有类的内部和他的子类才有访问权限echo $obj->private; // Fatal Error    只有类的内部才有访问权限$obj->printHello(); // Shows Public, Protected and Private//Define MyClass2class MyClass2 extends MyClass{    // We can redeclare the public and protected method, but not private    protected $protected = 'Protected2';    function printHello()    {        echo $this->public;        echo $this->protected;        echo $this->private;    }}$obj2 = new MyClass2();echo $obj2->public; // Worksecho $obj2->private; // Undefined  //private不可以被继承echo $obj2->protected; // Fatal Error$obj2->printHello(); // Shows Public, Protected2, not Private 



<?phpheader("content-type:text/html;charset='utf-8'");//Define MyClassclass MyClass{    // Contructors must be public    public function __construct() { }    // Declare a public method    public function MyPublic() { }    // Declare a protected method    protected function MyProtected() { }    // Declare a private method    private function MyPrivate() { }    // This is public    function Foo()    {        $this->MyPublic();        $this->MyProtected();        $this->MyPrivate();    }}$myclass = new MyClass;$myclass->MyPublic(); // Works$myclass->MyProtected(); // Fatal Error$myclass->MyPrivate(); // Fatal Error$myclass->Foo(); // Public, Protected and Private work//Define MyClass2class MyClass2 extends MyClass{    // This is public    function Foo2()    {        $this->MyPublic();        $this->MyProtected();        $this->MyPrivate(); // Fatal Error    }}$myclass2 = new MyClass2;$myclass2->MyPublic(); // Works$myclass2->Foo2(); // Public and Protected work, not Private/*另外在子类覆盖父类的方法时也要注意一点,子类中方法的访问权限一定不能低于父类被覆盖方法的访问权限,也就是一定要高于或等于父类方法的访问权限。例如,如果父类方法的访问权限是protected那么子类中要覆盖的权限就要是protected和public,如果父类的方法是public那么子类中要覆盖的方法只能也是public,总之子类中的方法总是要高于或等于父类被覆盖方法的访问权限。*/



0 0
原创粉丝点击