php
主页 > 网络编程 > php >

PHP中的public,private和protected的简单对比

2019-02-11 | 青灯夜游 | 点击:
本篇文章介绍PHP中的public,private和protected的简单对比。

在PHP中有三个访问修饰符:public,private和protected,可以通过在声明前加上这些关键字来定义属性,方法或常量的可见性。那么它们之间有什么区别?



 

PHP public访问修饰符

public修饰符在内部和外部都可以使用。如果一个类成员声明为public,那么它可以在任何地方被访问。

示例:

 

<?php 

header("content-type:text/html;charset=utf-8");  

// BaseClass 

class pub { 

    public $tag_line = "php中文网!"; 

    function display() { 

        echo $this->tag_line."<br/>"; 

    } 

} 

   

// 子类

class child extends pub { 

    function show(){ 

        echo $this->tag_line; 

    } 

}  

   

// 对象声明

$obj= new child; 

   

// 输出

echo $obj->tag_line."<br/>";  

   

$obj->display();  

   

$obj->show();  

?>

输出:


 

private访问修饰符

private修饰符可在其定义的类及其父类或继承类中使用。如果一个类成员声明为protected,则只能在类本身内以及继承和父类中访问它。

示例:

 

<?php 

header("content-type:text/html;charset=utf-8");  

// 基类

class pro { 

    protected $x = 500; 

    protected $y = 500; 

               

    // 实现减法 

    function sub()  

    { 

        echo $sum=$this->x-$this->y . "<br/>"; 

    }      

}  

   

// 子类-继承类

class child extends pro { 

    function mul() //实现乘法

    { 

        echo $sub=$this->x*$this->y; 

    } 

}  

   

$obj= new child; 

$obj->sub(); 

$obj->mul(); 

?>

输出:



protected访问修饰符

protected修饰符可在定义它的类中使用,注:它不能在类外部访问意味着继承类。

如果类成员声明为private,则它只能由定义该成员的类访问。

示例:

 

<?php 

header("content-type:text/html;charset=utf-8");  

// 基类

class demo { 

    private $name="PHP中文网!"; 

       

    private function show() 

    { 

        echo "这是基类的私有方法"; 

    } 

}  

   

// 子类

class child extends demo { 

    function display() 

    { 

        echo $this->name; 

    } 

}  

   

// 对象声明

$obj= new child; 

   

// 出现异常---未捕获错误:调用私有方法demo::show()

//$obj->show();  

   

//出现异常--未定义的属性:子级::$name

$obj->display(); 

?>

输出



说明:

从上例可以看出,它将显示错误,因为无法在类外访问私有类数据。

 

原文链接:
相关文章
最新更新