属性 | 外部 | 子类 | 内部 |
---|---|---|---|
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修饰符。
网友评论