权限修饰符
作用:控制访问权限,修饰属性,方法
权限控制符:public(公开的) protected(受保护的) private(私有的)
区别:
public 类内,类外,可以访问
protected 类内,子类的类内,可以访问
private 只有当前类的类内,可以访问
关于继承:
子类可以继承父类私有属性,不能继承私有方法
子类继承自父类的属性方法,必须比父类更松弛
实践
编写父类Father 和 子类Son demo1.php
/**
* Desc: 权限控制符的使用,父类, 建立查找关系,拷贝
* User: zyy
* Date: 2019-12-08
* Time: 下午 20:07
*/
class Father{
public $name;
protected $salary;
private $money; //私房钱
public function __construct($name, $salary, $money)
{
$this->name = $name;
$this->salary = $salary;
$this->money = $money;
}
/**
* 获取姓名
*
* @return string
* User: zyy
* Date: 2019-12-08
* Time: 下午 20:09
*/
public function getName()
{
return $this->name;
}
/**
* 获取薪水
*
* @return int
* User: zyy
* Date: 2019-12-08
* Time: 下午 20:10
*/
protected function getSalary()
{
return $this->salary;
}
/**
* 获取钱
*
* @return int
* User: zyy
* Date: 2019-12-08
* Time: 下午 20:10
*/
private function getMoney()
{
return $this->salary;
}
/**
* 获取信息
*
* User: zyy
* Date: 2020-01-10
* Time: 下午 23:42
*/
public function getInfo()
{
// 所有属性在方法内都能访问
echo $this->name . "的薪水一个月" . $this->salary . ",存款" . $this->money;
echo "
";
}
}
/**
* Desc: 子类,可以继承父类非private属性和方法
* User: zyy
* Date: 2019-12-08
* Time: 下午 20:16
*/
class Son extends Father
{
// private $salary; //控制权限必须必父类更松弛, 可以声明为protected 和 public
private $age;
/**
* 获取父类信息
*
* User: zyy
* Date: 2020-01-10
* Time: 下午 23:42
*/
public function getFatherInfo()
{
//子类不能调用父类的属性,可以调用父类的方法获取属性
parent::getName();
parent::getSalary();
// parent::getMoney(); //子类不能调用父类私有方法
// $this->getMoney(); //子类不能继承父类私有方法,私有属性可以继承(通过访问继承的公开方法,即可访问到私有属性)
}
}
//父类
$father1 = new Father('father1', 5000, 100000);
//类内public protected private属性都可以访问
$father1->getInfo();
//类外只能访问 public
echo $father1->name;
// echo $father1->salary; //受保护属性类外不能访问
// echo $father1->money; //私有属性类外不能访问
//子类继承父类
$son1 = new Son('son1', 2000, 0);
//类内public protected private属性都可以访问
$son1->getInfo();
//类外只能访问 public
echo $son1->name;
// echo $son1->salary;//受保护属性类外不能访问
// echo $son1->money;//私有属性类外不能访问