封装是指将类的属性和方法包装起来,同时对外提供访问接口。这样可以避免外部直接访问和修改类的属性和方法,保证了类的安全性。封装主要有以下两个原则:
PHP类的封装与继承详解
1. 封装
封装是指将类的属性和方法包装起来,同时对外提供访问接口。这样可以避免外部直接访问和修改类的属性和方法,保证了类的安全性。封装主要有以下两个原则:
- 只暴露需要被外部访问的方法和属性;
- 将类的属性设置为私有或受保护,只能通过公有方法访问和修改。
示例一:
class Person {
private $name;
private $age;
public function setName($name)
{
$this->name = $name;
}
public function setAge($age)
{
$this->age = $age;
}
public function getInfo()
{
return "My name is {$this->name}, I am {$this->age} years old";
}
}
$person = new Person();
$person->setName('Jack');
$person->setAge(20);
echo $person->getInfo(); // 输出: My name is Jack, I am 20 years old
示例一中,$name和$age被设置为私有,外部无法直接访问和修改。通过setName和setAge方法进行赋值,getInfo方法返回封装了$name和$age的信息。
2. 继承
继承是指通过一个类继承另一个类,继承类可以重写并扩展父类的属性和方法。在继承中,被继承的类称为父类或超类,继承类称为子类或派生类。
示例二:
class Person {
protected $name;
protected $age;
public function __construct($name, $age)
{
$this->name = $name;
$this->age = $age;
}
public function getInfo()
{
return "My name is {$this->name}, I am {$this->age} years old";
}
}
class Student extends Person {
private $school;
public function __construct($name, $age, $school)
{
parent::__construct($name, $age);
$this->school = $school;
}
public function getInfo()
{
return parent::getInfo() . ", and I am studying at {$this->school}";
}
}
$student = new Student('Bob', 18, 'ABC University');
echo $student->getInfo(); // 输出: My name is Bob, I am 18 years old, and I am studying at ABC University
示例二中,Student类继承了Person类的属性和方法,通过parent::__construct调用了父类的构造函数,初始化了父类的$name和$age属性,同时添加了一个私有的$school属性和一个重写的getInfo方法。
注意:继承是一种强依赖关系,子类的修改会影响到父类,因此不应轻易地去修改父类的属性和方法。同时,在使用继承的时候,需要遵循里氏替换原则,即父类能出现的地方子类一定能出现。
沃梦达教程
本文标题为:PHP类的封装与继承详解
基础教程推荐
猜你喜欢
- php实现构建排除当前元素的乘积数组方法 2022-11-23
- php数组函数序列之array_sum() – 计算数组元素值之和 2024-01-15
- PHP实现抽奖系统的示例代码 2023-06-26
- PHP+MySQL+sphinx+scws实现全文检索功能详解 2023-01-31
- php实现数组筛选奇数和偶数示例 2024-02-05
- PHP手机短信验证码实现流程详解 2022-10-18
- 设定php简写功能的方法 2023-03-17
- PHP判断一个字符串是否是回文字符串的方法 2024-01-31
- Yii框架连表查询操作示例 2023-02-13
- PHP实现文件下载【实例分享】 2024-04-27
