Heim > Backend-Entwicklung > PHP-Tutorial > 关于php访问控制的问题

关于php访问控制的问题

WBOY
Freigeben: 2016-06-20 12:49:14
Original
1038 Leute haben es durchsucht

class MyClass{    public $public       = 'public';    protected $protected = 'protected';    private  $private    = 'private';        function printHello(){        echo $this->public;        echo $this->protected;        echo $this->private . "<br/>";    }}$obj = new MyClass();$obj->printHello();class MyClass2 extends MyClass{       function printHello(){        echo $this->public;        echo $this->protected;        echo $this->private . "<br/>";    }}$obj2 = new MyClass2();$obj2->printHello();   // 输出 Public、Protected 和 Undefinedclass MyClass3 extends MyClass{   }$obj3 = new MyClass3();$obj3->printHello();   // 输出 Public、Protected 和 private
Nach dem Login kopieren

为什么$obj3->printHello的private有值,不是private 定义的类成员则只能被其所在类访问。


回复讨论(解决方案)


MyClass2 中有printHello 重写了 MyClass中的printHello。
而MyClass2 调用 MyClass的$private为undefined 因为MyClass2的printHello方法没有权限读取MyClass的$privite

MyClass3 中没有printHello,所以$obj3->printHello实际上是调用MyClass的printHello
MyClass printHello方法读取 Myclass $private有权限。所以 $obj3->printHello可以显示出MyClass 的 $private

MyClass2 中有printHello 重写了 MyClass中的printHello。
而MyClass2 调用 MyClass的$private为undefined 因为MyClass2的printHello方法没有权限读取MyClass的$privite

MyClass3 中没有printHello,所以$obj3->printHello实际上是调用MyClass的printHello
MyClass printHello方法读取 Myclass $private有权限。所以 $obj3->printHello可以显示出MyClass 的 $private


是不是因为MyClass3的printHello方法从MyClass继承,printHello方法是公开的,MyClass3的堆里的printHello还是指向MyClass的MyClass的printHello位置。

楼上正解!!!!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage