继承与多态
extends 继承、parent::、方法重写 override、final 禁止继承
继承与多态
extends 继承父类,parent:: 调用父类方法。final 禁止继承,override 显式重写。
学完本章你将: 掌握 extends 继承、parent::、方法重写、final 关键字。
基本继承
php
<?php
class Animal {
public function __construct(
protected string $name,
) { }
public function speak(): string {
return "{$this->name} 发出叫声";
}
}
class Dog extends Animal {
public function speak(): string {
return "{$this->name} 汪汪叫!";
}
public function fetch(): string {
return "{$this->name} 去捡球了";
}
}
$dog = new Dog("旺财");
echo $dog->speak(); // 旺财 汪汪叫!
echo $dog->fetch(); // 旺财 去捡球了
parent:: 调用父类方法
php
<?php
class Logger {
public function log(string $msg): void {
echo "[LOG] $msg\n";
}
}
class TimestampLogger extends Logger {
public function log(string $msg): void {
$msg = date("H:i:s") . " " . $msg;
parent::log($msg); // 调用父类的 log
}
}
final —— 禁止继承或重写
php
<?php
final class StringUtils { } // 不能被继承
// class MyUtils extends StringUtils { } // ❌ 错误
class Base {
final public function critical(): void { }
}
class Derived extends Base {
// public function critical(): void { } // ❌ 错误——不能重写 final 方法
}