权限修饰符
作用:控制访问权限,修饰属性,方法
权限控制符:public(公开的)、protected(受保护的)、private(私有的)
区别:
1、public 类内、类外都可以访问
2、protected 类内、子类的类内可以访问
3、private 只有当前类的类内可以访问
关于继承:
1、子类可以继承父类的私有属性,不能继承私有方法
2、子类继承自父类的属性方法,子类必须和父类的修饰相同,或者更松弛
- 父类为public,则子类必须为public
- 父类为protected,子类需为public或protected
- 父类为private,则子类可以public、protected、private
实践:
编写父类Father和子类Son
<?php
class Father{
public $name; //姓名
protected $salary; //薪资
private $money; //存款
public function __construct($name, $salary, $money)
{
$this->name = $name;
$this->salary = $salary;
$this->money = $money;
}
public function getName()
{
return $this->name;
}
protected function getSalary()
{
return $this->salary;
}
private function getMoney()
{
return $this->money;
}
public function getInfo()
{
echo $this->name . "的薪资一个月" . $this->salary;
echo "存款" . $this->money;
echo "<br/>";
}
}
class Son extends Father{
//private $salary; //控制权限必须比父类更松弛,可以声明为protected或public
private $age;
public function getFatherInfo()
{
//子类不能调用父类的属性,可以调用父类的方法获取属性
parent::getName();
parent::getSalary();
//parent::getMoney(); //子类不能调用父类的私有方法
//$this->getMoney(); //子类不能继承父类的私有方法,私有属性可以继承(通过访问继承的公开方法,即可访问到私有属性)
}
}
//父类
$father = new Father('小明', 20000, 15000);
//类内public、protected、private属性都可以访问
$father->getInfo();
//类外只能访问public
echo $father->name;
// echo $father->salary; //受保护属性类外不能访问
// echo $father->money; //私有属性类外不能访问
//子类继承父类
$son = new Son('张三', 10000, 5000);
//类内public、protected、private属性都可以访问
$son->getInfo();
//类外只能访问public
echo $son->name;
// echo $son->salary; //受保护属性类外不能访问
// echo $son->money; //私有属性类外不能访问