当前位置:首页 > PHP教程 > php面向对象 > 列表

PHP抽象类基本用法示例

发布:smiling 来源: PHP粉丝网  添加日期:2021-11-03 14:54:56 浏览: 评论:0 

这篇文章主要介绍了PHP抽象类基本用法,结合实例形式分析了php抽象类的概念、原理、定义、使用方法及相关操作注意事项,代码注释包含较为详尽的说明信息,需要的朋友可以参考下。

本文实例讲述了PHP抽象类基本用法,分享给大家供大家参考,具体如下:

  1. <?php 
  2. //抽象类像一个模板,供子类扩展(重写),抽象类里有普通方法(有方法体),也有抽象方法,其中抽象方法没有方法体,且以分号结束。 
  3. //只要有一个抽象方法,那么此类必须定义为抽象类。 
  4. //抽象类不能创建自己的实例,在试图创建抽象类对象时,会产生一个致使错误。 
  5. //在子类里实现抽象类的方法,并且可见性要等于、高于抽象方法的可见性,抽象类(public|protected|private),子类(public|public,protected|有致命错误,且不能被继承)。 
  6. //抽象类不能定义私有方法,可以定义私有属性。 
  7. //如果子类没有扩展(重写)抽象类的抽象方法,会产生致使错误。 
  8. abstract class Employees{ 
  9.   protected $name = null; 
  10.   function __construct($nameStr){ 
  11.     $this->name = $nameStr
  12.   } 
  13.   abstract public function work(); 
  14.   public function work1(){ 
  15.     echo "<p>$this->name</p>"
  16.   } 
  17.   //function __destruct(){} 
  18. class Managers extends Employees{ 
  19.   public function __construct($nameStr){ 
  20.     parent::__construct($nameStr); 
  21.   } 
  22.   /*public function work(){//如果子类没有扩展(重写)抽象类的抽象方法,会产生致使错误。 
  23.     echo "<p>$this->name is working</p>"; 
  24.   }*/ 
  25. //$obj1 = new Employees();//创建抽象类对象时,会产生一个致使错误。 
  26. $obj2 = new Managers('e2'); 
  27. //$obj2->work(); 

运行上述代码,会提示如下错误信息:

Fatal error: Class Managers contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (Employees::work) in D:\phproot\test\ClassDemo.php on line 26

将错误提示位置及末尾位置代码注释删除后,改为如下代码:

  1. <?php 
  2. //抽象类像一个模板,供子类扩展(重写),抽象类里有普通方法(有方法体),也有抽象方法,其中抽象方法没有方法体,且以分号结束。 
  3. //只要有一个抽象方法,那么此类必须定义为抽象类。 
  4. //抽象类不能创建自己的实例,在试图创建抽象类对象时,会产生一个致使错误。 
  5. //在子类里实现抽象类的方法,并且可见性要等于、高于抽象方法的可见性,抽象类(public|protected|private),子类(public|public,protected|有致命错误,且不能被继承)。 
  6. //抽象类不能定义私有方法,可以定义私有属性。 
  7. //如果子类没有扩展(重写)抽象类的抽象方法,会产生致使错误。 
  8. abstract class Employees{ 
  9.   protected $name = null; 
  10.   function __construct($nameStr){ 
  11.     $this->name = $nameStr
  12.   } 
  13.   abstract public function work(); 
  14.   public function work1(){ 
  15.     echo "<p>$this->name</p>"
  16.   } 
  17.   //function __destruct(){} 
  18. class Managers extends Employees{ 
  19.   public function __construct($nameStr){ 
  20.     parent::__construct($nameStr); 
  21.   } 
  22.   public function work(){//如果子类没有扩展(重写)抽象类的抽象方法,会产生致使错误。 
  23.     echo "<p>$this->name is working</p>"
  24.   } 
  25. //$obj1 = new Employees();//创建抽象类对象时,会产生一个致使错误。 
  26. $obj2 = new Managers('e2'); 
  27. $obj2->work(); 

测试运行结果:

e2 is working

Tags: PHP抽象类

分享到: