封装是指将类的属性和方法包装起来,同时对外提供访问接口。这样可以避免外部直接访问和修改类的属性和方法,保证了类的安全性。封装主要有以下两个原则:
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写app用的框架整理 2023-02-21
- PHP集成环境MxSrvs如何安装fileinfo扩展 2023-08-30
- thinkPHP框架实现的简单计算器示例 2022-11-28
- PHP PDOStatement::getColumnMeta讲解 2022-12-12
- 微信小程序结合ThinkPHP5授权登陆后获取手机号 2023-06-19
- php递归如何获取无限上级ID 2023-07-03
- PHP microtime函数详解 2023-10-08
- PHP基于CURL发送JSON格式字符串的方法示例 2022-10-09
- php+ajax 文件上传代码实例 2022-12-30
- ThinkPHP 5.1 跨域配置方法 2023-02-23