PHP中定义类用class关键字,继承必须通过extends实现且仅支持单继承;类封装属性和方法,属性需用public/protected/private修饰,构造方法为__construct();子类继承父类非私有成员,private成员不可被继承或访问。

PHP中定义类用class关键字,继承则必须通过extends实现,且仅支持单继承——一个子类只能有一个直接父类。
类的基本定义方式
类是对象的模板,封装属性和方法。语法简洁明确:
- 使用
class 类名 { }声明 - 属性需用
public、protected或private修饰,不可省略 - 构造方法统一为
__construct(),用于初始化对象状态
例如:
<?phpclass Animal {
protected $name;
public function __construct($name) {
$this->name = $name;
}
public function getName() {
return $this->name;
}
}
继承的语法与规则
子类通过extends从父类继承非私有成员(public和protected),并可扩展或重写:
立即学习“PHP免费学习笔记(深入)”;
- 子类无法访问父类的
private属性或方法 - 若子类有构造函数,通常需显式调用
parent::__construct()来初始化父类部分 - 方法重写时签名需保持一致,可用
parent::方法名()在子类中调用父类原始实现
例如:
class Dog extends Animal {private $breed;
public function __construct($name, $breed) {
parent::__construct($name); // 初始化父类
$this->breed = $breed;
}
public function bark() {
echo "汪汪汪!";
}
}
访问控制在继承中的实际影响
三种修饰符决定了继承时的可见性边界:
-
public:子类、外部均可直接访问 -
protected:仅本类及子类内部可访问,外部不可见(专为继承设计) -
private:仅本类内部可用,子类完全不可见,也不参与继承传递
这意味着,想让子类能复用或修改某个属性/方法,就不能用private修饰。
多层继承与限制
PHP允许链式继承(如C extends B,而B extends A),C间接继承A的所有非私有成员;但不支持多重继承(即不能class C extends A, B)。若需组合多个行为,应使用trait或接口(interface)替代。



















