在父类中添加一个受保护的函数 getName,用来获取父类私有属性的值:$name 在父类中添加一个受保护的函数 setName,用来设置父类私有属性的值:$name 在子类中重定义这两个函数来调用上面实现的两个父类方法
时间: 2024-12-21 15:31:26 浏览: 13
在这个场景中,你在设计一个面向对象的结构,其中有一个基础类(父类)叫做`ParentClass`,它包含两个受保护(protected)的方法:`getName()`和`setName()`,分别用于获取和设置私有属性`$name`的值。这是为了保证数据封装,即让子类能够访问这个内部状态,但外部不能直接修改。
当你在子类`ChildClass`中继承`ParentClass`时,你可以选择重写这两个方法,使其成为公共(public)或者至少允许子类进行访问。这样做的目的是为了让子类可以根据需要改变获取和设置的方式,同时保持原始逻辑。例如,子类可能需要额外的操作或者校验再设置`$name`,或者提供不同的方式来读取它的值。
以下是基本的代码实现:
```php
class ParentClass
{
protected $name;
// 受保护的获取名字的方法
protected function getName()
{
return $this->name;
}
// 受保护的设置名字的方法
protected function setName($value)
{
$this->name = $value; // 封装操作,避免直接访问
}
}
class ChildClass extends ParentClass
{
// 在子类中重写这两个方法
public function getName()
{
return parent::getName(); // 调用父类的原生方法
}
public function setName($value)
{
// 这里子类可以添加额外处理
$this->name = filter_var($value, FILTER_SANITIZE_STRING); // 示例,过滤输入
parent::setName($value);
}
}
```
阅读全文