国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

PHP基礎之類和對象6——訪問控制:public/protected/private

瀏覽:55日期:2022-09-14 17:27:44

對屬性或方法的訪問控制,是通過在前面添加關鍵字 public(公有),protected(受保護)或 private(私有)來實現的。被定義為公有的類成員可以在任何地方被訪問。被定義為受保護的類成員則可以被其自身以及其子類和父類訪問。被定義為私有的類成員則只能被其定義所在的類訪問。

一、屬性的訪問控制

類屬性必須定義為公有,受保護,私有之一。如果用?var?定義,則被視為公有。Example #1 屬性聲明

class MyClass{ public $public = ’Public’; protected $protected = ’Protected’; private $private = ’Private’; function printHello() {echo $this->public.’<br>’;echo $this->protected.’<br>’;echo $this->private.’<br>’; }}$obj = new MyClass();echo $obj->public; //這行可以正常運行echo $obj->protected; //這行會產生一個致命錯誤echo $obj->private; //這行也會產生一個致命錯誤$obj->printHello(); //正常輸出public、protected、private的值class MyClass2 extends MyClass{ protected $protected = ’Protected2’; function printHello(){echo $this->public;echo $this->protected;echo $this->private; }}$obj2 = new MyClass2();echo $obj2->public; //這行可以正常執行echo $obj2->private; //未定義privateecho $obj2->protected; //產生一個致命的錯誤$obj2->printHello(); //輸出Public、Protected和Undefined

Note: 為了兼容性考慮,在 PHP 4 中使用?var?關鍵字對變量進行定義的方法在 PHP 5 中仍然有效(只是作為 public 關鍵字的一個別名)。在 PHP 5.1.3 之前的版本,該語法會產生一個?E_STRICT?警告。

方法的訪問控制

類中的方法可以被定義為公有,私有或受保護。如果沒有設置這些關鍵字,則該方法默認為公有。Example #2 方法聲明

class MyClass{ //聲明一個公有的構造函數 public function __construct(){} //聲明一個公有的方法 public function MyPublic(){} //聲明一個受保護的方法 protected function MyProtected(){} //聲明一個私有的方法 private function MyPrivate(){} //此方法為公有 function Foo() {$this->MyPublic();$this->MyProtected();$this->MyPrivate(); }}$myclass = new MyClass;$myclass -> MyPublic(); //這行能被正常執行$myclass -> MyProtected(); //這行會產生一個致命錯誤$myclass -> MyPrivate(); //這行會產生一個致命錯誤$myclass -> Foo(); //公有,受保護,私有都可以執行class MyClass2 extends MyClass{ //此方法為公有 function Foo2() {$this->MyPublic();$this->MyProtected();$this->MyPrivate(); //這行會產生一個致命錯誤 }}$myclass2 = new MyClass2;$myclass2 -> MyPublic(); //這行能被正常執行$myclass2 -> Foo2(); //公有和受保護的都可以執行,但私有的不行class Bar{ public function test(){$this->testPrivate();$this -> testPublic(); } public function testPublic(){echo 'Bar::testPublic<br>'; } private function testPrivate(){ echo 'Bar::testPrivate<br>'; }}class Foo extends Bar{ public function testPublic(){echo 'Foo::testPublic<br>'; } public function testPrivate(){ echo 'Foo::testPrivate<br>'; }}$myFoo = new Foo();$myFoo -> test(); //Bar::testPrivate//Foo::testPublic其它對象的訪問控制

同一個類的對象即使不是同一個實例也可以互相訪問對方的私有與受保護成員。這是由于在這些對象的內部具體實現的細節都是已知的。Example #3 訪問同一個對象類型的私有成員

class Test{ private $foo; public function __construct($foo) {$this->foo = $foo; } private function bar() {echo 'Accessed the private method.'; } public function baz(Test $other) {//我們可以在這里改變私有屬性的值$other->foo = ’hello’;var_dump($this->foo);//我們也可以在這里調用私有的方法$other->bar(); }}$test = new Test(’test’);$test -> baz(new Test(’other’));

輸出結果:

string(4) 'test'Accessed the private method.

標簽: PHP
相關文章:
主站蜘蛛池模板: 免费91最新地址永久入口 | 7777视频| 亚洲成人欧美 | 九九99久久 | 91国语对白| 神马我我不卡伦影视 | 日韩午夜精品 | 91久久另类重口变态 | 日韩在线国产精品 | 久久久久亚洲香蕉网 | 久久久久久综合一区中文字幕 | 最新国产美女一区二区三区 | fc2在线播放 | 一区二区三区不卡在线观看 | 欧美一级成人毛片影院 | 欧美另类性视频在线看 | 99精品视频在线观看免费播放 | 成人免费福利片在线观看 | 久久手机精品视频 | 在线日韩欧美一区二区三区 | 国产高清一级视频在线观看 | 精品视频一区二区三区 | 亚洲国产成人综合 | 日本免费高清视频二区 | 私人毛片免费高清影视院丶 | 国内真实愉拍系列情侣自拍 | 免费又黄又爽又猛大片午夜 | 成年片美女福利视频在线 | 在线日韩欧美一区二区三区 | 国产2021中文天码字幕 | 福利片免费一区二区三区 | 亚洲精品综合欧美一区二区三区 | 欧美性一区二区三区 | 96精品视频在线播放免费观看 | 日韩专区亚洲国产精品 | 国产亚洲精品自在线观看 | 中文字幕乱码系列免费 | 欧美另类孕交免费观看 | 亚洲国产欧美在线成人aaaa | 一级毛片免费观看久 | 在线精品一区二区三区 |