没错!因为 WeddingCake 继承自 Cake,所以它拥有父类的所有资源。你无需重写 describe() 的逻辑;它能直接运行。这就是继承的核心:重用代码以节省时间并减少错误。
现在,让我们来看下一个支柱:封装🔒。
封装:厨房规则
用蛋糕来打比方,想象一下,如果有人在蛋糕烘烤时走进厨房,把“巧克力”口味改成“肥皂”口味,那会是什么情况?简直是灾难!🧼
在编程中,我们使用访问修饰符来保护数据。你可以把它们想象成类属性上的“禁止入内”标志:
| Modifier | Access Level | Analogy |
public | Anywhere (inside or outside the class) | An open buffet 🍴 |
protected | Only inside the class and its “children” | A family secret recipe ㊙️ |
private | Only inside the specific class itself | Your personal diary 📔 |
为了确保安全,我们通常会将属性设为私有或受保护的,并提供 Getter 和 Setter 方法来与它们交互。这样我们就可以添加“验证”(规则)。
class Cake {
private $flavor; // No one can change this directly now!
public function setFlavor($newFlavor) {
// We can add a rule here
if ($newFlavor === "Soap") {
return "Error: That is not a cake flavor!";
}
$this->flavor = $newFlavor;
}
public function getFlavor() {
return $this->flavor;
}
}
逻辑挑战
假设你有一个 User 类,它有一个私有属性 $password。
如果我们想允许用户更改密码,但又想确保密码长度至少为 8 个字符,那么在 changePassword() 函数中,我们应该使用哪个修饰符才能让网站的其他部分也能使用它?
WP开发教程 WordPress导师在线教程