美文网首页
public、protected、private属性

public、protected、private属性

作者: Do_you | 来源:发表于2018-03-01 22:16 被阅读0次
    属性 外部 子类 内部
    public 可以 可以 可以
    protected 不行 可以 可以
    private 不行 不行 可以

    注意:设置了访问的修饰符后,类继承时总是保持一种“是一”的关系。因此,如果一个父类把一个成员变量声明成为公共的成员,继承的子类也必须把它声明为公共成员。否则,子类将不能与父类保持“是一”的关系,这种关系意味着你对父类的任何修改也会影响子类。

    <?php
    /**
    * Created by PhpStorm.
    * User: ZhouTengFu
    * Date: 2018/2/13
    * Time: 上午12:45
    */
    class MyDbConnectionClass
    {
    /**
    * 不希望被外部直接赋值或者调用。所以使用private
    * @var
    */
    private $dbConnection;
    
    /**
    * 该方法对外,所以使用public
    * @return resource
    */
    public function connect()
    {
    $conn = $this->createDbConnection();
    $this ->setDbConnection($conn);
    return $conn;
    }
    
    /**
    * 该方法可能会被继承的类修改,所以使用protected
    * @return resource
    */
    protected function createDbConnection()
    {
    return mysql_connect("localhost");
    }
    
    /**
    * 该方法只会被内部调用,所以使用private
    * @param $conn
    */
    private function setDbConnection($conn)
    {
    $this->dbConnection=$conn;
    }
    }
    
    class MyFooDotComDbConnectionClass extends MyDbConnectionClass{
    /**
    * 由于要保持"是一"的关系,这里不能使用private,能使用public,protected。只能越来越开放
    * @return resource
    */
    public function createDbConnection()
    {
    return mysql_connect("foo.com");
    }
    }
    

    注意:如果没有给一个方法设置访问的修饰符,会被默认为public修饰符。

    相关文章

      网友评论

          本文标题:public、protected、private属性

          本文链接:https://www.haomeiwen.com/subject/byanxftx.html