0012-PHP8 类的三大特性

PHP-教程   2023-04-18 18:36   717   0  

类的三大特性

  • 继承:可以让某个类型的对象获得另一个类型的对象的属性和方法

  • 封装:指将客观事物抽象成类,每个类对自身的数据和方法实行保护

  • 多态:指同一个实体同时具有多种形式,它主要体现在类的继承体系中

1、继承

  • extends 关键词继承父类

class Teacher{
 public $name;
 public $school;
 // 构造方法
 public function __construct($name, $school){
   $this->name = $name;
   $this->school = $school;
 }
 public function fun1(){
   echo '姓名:小红,学校:PHP教程<hr/>';
 }
 public function fun2(){
   return '姓名:小红,学校:PHP教程<hr/>';
 }
 public function fun3(){
   // 在类中使用伪变量: "$this" 引用当前类的成员变量
   return '姓名:'.$this->name.',学校:'.$this->school.'<hr/>';
 }
 public function fun4(){
   // 在类中使用伪变量: "$this" 引用当前类的成员方法
   return $this->fun3();
 }
 // 析构方法
 public function __destruct(){
   echo '类执行完毕,要关闭了';
 }
}
// 子类代码复用
class PHPTeacher extends Teacher{

}
// 实例化
$obj = new PHPTeacher('小明','PHP教程');
echo $obj->fun3();

2、封装

  • public 默认的, 关键词定义类内、类外、子类都可见

  • protected 关键词定义类内、子类可见,类外不可见

  • private 关键词定义类内可见, 子类、类外不可见

class Teacher{
 protected $name;
 private $school;
 // 构造方法
 public function __construct($name, $school){
   $this->name = $name;
   $this->school = $school;
 }
 protected function fun1(){
   echo '姓名:小红,学校:PHP教程<hr/>';
 }
 private function fun2(){
   return '姓名:小红,学校:PHP教程<hr/>';
 }
 public function fun3(){
   // 在类中使用伪变量: "$this" 引用当前类的成员变量
   return '姓名:'.$this->name.',学校:'.$this->school.'<hr/>';
 }
 public function fun4(){
   // 在类中使用伪变量: "$this" 引用当前类的成员方法
   return $this->fun3();
 }
 // 析构方法
 public function __destruct(){
   echo '类执行完毕,要关闭了';
 }
}
// 子类代码复用
class PHPTeacher extends Teacher{
 public function fun5(){
   $this->fun1();
 }
 public function fun6(){
   $this->fun2();
 }
 public function fun7(){
   return $this->name;
 }
 public function fun8(){
   return $this->school;
 }
}
// 实例化
$obj = new Teacher('小明','PHP教程');
echo $obj->fun1();
echo $obj->fun2();
echo $obj->name;
echo $obj->school;

$obj2 = new PHPTeacher('小明','PHP教程');
echo $obj2->fun1();
echo $obj2->fun2();
echo $obj2->fun5();
echo $obj2->fun6();
echo $obj2->fun7();
echo $obj2->fun8();

3、多态

  • 实现多态的前提是要先继承,在重写父类方法

class Teacher{
 protected $name;
 private $school;
 // 构造方法
 public function __construct($name, $school){
   $this->name = $name;
   $this->school = $school;
 }
 protected function fun1(){
   echo '姓名:小红,学校:PHP教程<hr/>';
 }
 private function fun2(){
   return '姓名:小红,学校:PHP教程<hr/>';
 }
 public function fun3(){
   // 在类中使用伪变量: "$this" 引用当前类的成员变量
   return '姓名:'.$this->name.',学校:'.$this->school.'<hr/>';
 }
 public function fun4(){
   // 在类中使用伪变量: "$this" 引用当前类的成员方法
   return $this->fun3();
 }
 // 析构方法
 public function __destruct(){
   echo '类执行完毕,要关闭了';
 }
}
// 子类代码复用
class PHPTeacher extends Teacher{
 public function fun5(){
   $this->fun1();
 }
 public function fun6(){
   $this->fun2();
 }
 public function fun4(){
   return '我是重写的方法';
 }
}
$obj2 = new PHPTeacher('小明','PHP教程');
echo $obj2->fun4();


博客评论
还没有人评论,赶紧抢个沙发~
发表评论
说明:请文明发言,共建和谐网络,您的个人信息不会被公开显示。