访问控制 #
一、访问修饰符 #
1.1 三种修饰符 #
| 修饰符 | 类内部 | 子类 | 外部 |
|---|---|---|---|
| public | ✓ | ✓ | ✓ |
| protected | ✓ | ✓ | ✗ |
| private | ✓ | ✗ | ✗ |
1.2 属性访问控制 #
php
<?php
class User
{
public string $name;
protected int $age;
private string $password;
public function setAge(int $age): void
{
$this->age = $age;
}
public function getAge(): int
{
return $this->age;
}
public function setPassword(string $password): void
{
$this->password = password_hash($password, PASSWORD_DEFAULT);
}
}
1.3 方法访问控制 #
php
<?php
class Order
{
public function process(): void
{
$this->validate();
$this->calculate();
$this->save();
}
protected function validate(): bool
{
return true;
}
private function calculate(): void
{
}
private function save(): void
{
}
}
二、实际应用 #
2.1 封装 #
php
<?php
class BankAccount
{
private float $balance = 0;
public function deposit(float $amount): void
{
if ($amount > 0) {
$this->balance += $amount;
}
}
public function withdraw(float $amount): bool
{
if ($amount > 0 && $this->balance >= $amount) {
$this->balance -= $amount;
return true;
}
return false;
}
public function getBalance(): float
{
return $this->balance;
}
}
2.2 继承中的访问控制 #
php
<?php
class Animal
{
protected string $name;
public function __construct(string $name)
{
$this->name = $name;
}
protected function eat(): void
{
echo "{$this->name} is eating\n";
}
}
class Dog extends Animal
{
public function bark(): void
{
echo "{$this->name} is barking\n";
}
public function feed(): void
{
$this->eat();
}
}
三、总结 #
本章学习了:
- public、protected、private的区别
- 属性访问控制
- 方法访问控制
- 封装实现
下一章将学习继承。
最后更新:2026-03-26