• 售前

  • 售后

热门帖子
入门百科

PHP抽象类根本用法示例

[复制链接]
直子的爱本 显示全部楼层 发表于 2021-10-26 13:47:38 |阅读模式 打印 上一主题 下一主题
本文实例陈诉了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. }
  19. class Managers extends Employees{
  20.   public function __construct($nameStr){
  21.     parent::__construct($nameStr);
  22.   }
  23.   /*public function work(){//如果子类没有扩展(重写)抽象类的抽象方法,会产生致使错误。
  24.     echo "<p>$this->name is working</p>";
  25.   }*/
  26. }
  27. //$obj1 = new Employees();//创建抽象类对象时,会产生一个致使错误。
  28. $obj2 = new Managers('e2');
  29. //$obj2->work();
复制代码
运行上述代码,会提示如下错误信息:
  1. 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. }
  19. class Managers extends Employees{
  20.   public function __construct($nameStr){
  21.     parent::__construct($nameStr);
  22.   }
  23.   public function work(){//如果子类没有扩展(重写)抽象类的抽象方法,会产生致使错误。
  24.     echo "<p>$this->name is working</p>";
  25.   }
  26. }
  27. //$obj1 = new Employees();//创建抽象类对象时,会产生一个致使错误。
  28. $obj2 = new Managers('e2');
  29. $obj2->work();
复制代码
测试运行结果:
  1. e2 is working
复制代码
更多关于PHP相关内容感爱好的读者可查看本站专题:《php面向对象程序设计入门教程》、《PHP数组(Array)操作本事大全》、《PHP根本语法入门教程》、《PHP运算与运算符用法总结》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作本事汇总》
渴望本文所述对各人PHP程序设计有所帮助。

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作