当前位置:Gxlcms > PHP教程 > php5中oop6的可见性控制的示例代码分享

php5中oop6的可见性控制的示例代码分享

时间:2021-07-01 10:21:17 帮助过:36人阅读

和其他语言一样,也是通过关键字public,protected,private的限制:

<?php 
/** 
 * 定义MyClass 
 */ 
class MyClass 
{ 
        public $public = 'Public';//公有 
        protected $protected = 'Protected';//保护 
        private $private = 'Private';//私有 
 
        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 = 'Protected2'; //重写 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的可见性控制的示例代码分享的详细内容,更多请关注Gxl网其它相关文章!

人气教程排行