PHP中public、private和protected的区别是什么?
大家好!我刚开始学习PHP中的面向对象编程,一直搞不懂访问修饰符public、private和protected之间的区别。我读过文档,但在实践中还是感到困惑。
这是我写的一个简单类:
```php
class Car {
public $color = 'red';
private $engineStatus = 'off';
protected $fuelLevel = 100;
public function startEngine() {
$this->engineStatus = 'on';
}
private function checkFuel() {
return $this->fuelLevel > 0;
}
protected function refuel($liters) {
$this->fuelLevel += $liters;
}
}
```
我创建了一个对象:
```php
$car = new Car();
echo $car->color; // 可以工作
echo $car->engineStatus; // 报错!
$car->refuel(20); // 也不工作
```
为什么我不能直接访问engineStatus和fuelLevel属性?而且如果protected和private都限制访问,它们之间有什么区别?请用