首頁  >  文章  >  後端開發  >  php5中oop6的可見性控制的範例程式碼分享

php5中oop6的可見性控制的範例程式碼分享

黄舟
黄舟原創
2017-07-02 10:54:011141瀏覽

和其他語言一樣,也是透過關鍵字public,protected,private的限制:

<?php 
/** 
 * 定义MyClass 
 */ 
class MyClass 
{ 
        public $public = &#39;Public&#39;;//公有 
        protected $protected = &#39;Protected&#39;;//保护 
        private $private = &#39;Private&#39;;//私有 
 
        function printHello() 
        { 
                echo $this->public;echo "<br/>"; 
                echo $this->protected;echo "<br/>"; 
                echo $this->private;echo "<br/>"; 
        } 
} 
 
$obj = new MyClass(); 
echo $obj->public; // 可以 
//echo $obj->protected; // 致命错误 
//echo $obj->private; // 致命错误 
$obj->printHello(); // 输出 Public, Protected and Private 
 
 
/** 
 * 定义 MyClass2 
 */ 
class MyClass2 extends MyClass 
{ 
        // 对于公有和保护方法或成员,我们可以重新声明,但私有的不可以 
        protected $protected = &#39;Protected2&#39;; 
 
        //重写    
        function printHello() 
        { 
            echo "这个是MyClass2的:";echo "<br/>"; 
                echo $this->public;echo "<br/>"; 
                echo $this->protected;echo "<br/>"; 
                //echo $this->private;echo "<br/>";不能访问到父类的私有属性 
        } 
} 
 
$obj2 = new MyClass2(); 
echo $obj2->public; // 可以 
//echo $obj2->private; // 未定义 
//echo $obj2->protected; // 致命错误 
$obj2->printHello(); // 输出 Public, Protected2, Undefined 
 
?>

當然透過這些存取控制符,我們也可以對函數實現同樣的可存取控制:

<?php 
/** 
 * 定义 MyClass 
 */ 
class MyClass 
{ 
        // 构造函数必须是public 
        public function construct() { } 
 
        // 声明一个public 的方法 
        public function MyPublic() { } 
 
        // 声明 protected 方法 
        protected function MyProtected() { } 
 
        // 声明private 方法 
        private function MyPrivate() { } 
 
        // 默认是public的 
        function Foo() 
        { 
          //类里面可以直接访问 
                $this->MyPublic(); 
                $this->MyProtected(); 
                $this->MyPrivate(); 
        } 
} 
 
$myclass = new MyClass; 
$myclass->MyPublic(); // 可以 
$myclass->MyProtected(); // 致命错误 
$myclass->MyPrivate(); //致命错误 
$myclass->Foo();    
 
 
/** 
 * 定义 MyClass2 
 */ 
class MyClass2 extends MyClass 
{ 
        //public 
        function Foo2() 
        { 
                $this->MyPublic(); 
                $this->MyProtected(); 
                $this->MyPrivate(); // 致命错误 
        } 
} 
 
$myclass2 = new MyClass2; 
$myclass2->MyPublic(); // 可以 
$myclass2->Foo2();    
 
/** 
 * 定义Bar 
 */ 
    
class Bar    
{ 
        public function test() { 
                $this->testPrivate(); 
                $this->testPublic(); 
        } 
 
        public function testPublic() { 
                echo "Bar::testPublic\n"; 
        } 
         
        private function testPrivate() { 
                echo "Bar::testPrivate\n"; 
        } 
} 
 
class Foo extends Bar    
{ 
        public function testPublic() { 
                echo "Foo::testPublic\n"; 
        } 
         
        private function testPrivate() { 
                echo "Foo::testPrivate\n"; 
        } 
} 
 
$myFoo = new Foo(); 
 
//通过继承来的公有方法Bar::test() 
$myFoo->test(); // Bar::testPrivate    
                                      // Foo::testPublic 
?>

以上是php5中oop6的可見性控制的範例程式碼分享的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn