PHP抽象类基本用法示例


Posted in PHP onDecember 28, 2018

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

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

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

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

测试运行结果:

e2 is working

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
投票管理程序
Oct 09 PHP
php in_array 函数使用说明与in_array需要注意的地方说明
Apr 13 PHP
php中使用preg_replace函数匹配图片并加上链接的方法
Feb 06 PHP
php中的静态变量的基本用法
Mar 20 PHP
php smarty模板引擎的6个小技巧
Apr 24 PHP
CI框架在CLI下执行占用内存过大问题的解决方法
Jun 17 PHP
ThinkPHP的I方法使用详解
Jun 18 PHP
如何在HTML 中嵌入 PHP 代码
May 13 PHP
yii2缓存Caching基本用法示例
Jul 18 PHP
php 使用redis锁限制并发访问类示例
Nov 02 PHP
thinkphp5.0自定义验证规则使用方法
Nov 16 PHP
基于PHP实现用户在线状态检测
Nov 10 PHP
php PDO属性设置与操作方法分析
Dec 27 #PHP
php实现的PDO异常处理操作分析
Dec 27 #PHP
CI框架网页缓存简单用法分析
Dec 26 #PHP
CI框架附属类用法分析
Dec 26 #PHP
Yii2.0 RESTful API 基础配置教程详解
Dec 26 #PHP
CI框架实现创建自定义类库的方法
Dec 25 #PHP
PHP中soap用法示例【SoapServer服务端与SoapClient客户端编写】
Dec 25 #PHP
You might like
最令PHP初学者头痛的十四个问题
2006/07/12 PHP
PHP 创建标签云函数代码
2010/05/26 PHP
PHP如何解决网站大流量与高并发的问题
2011/06/25 PHP
php上传图片类及用法示例
2016/05/11 PHP
PHP如何获取当前主机、域名、网址、路径、端口等参数
2017/06/09 PHP
PHP自定义递归函数实现数组转JSON功能【支持GBK编码】
2018/07/17 PHP
统一接口:为FireFox添加IE的方法和属性的js代码
2007/03/25 Javascript
百度Popup.js弹出框进化版 拖拽小框架发布 兼容IE6/7/8,Firefox,Chrome
2010/04/13 Javascript
javascript JSON操作入门实例
2010/04/16 Javascript
js报错 Object doesn't support this property or method的原因分析
2011/03/31 Javascript
纯JavaScript实现HTML5 Canvas六种特效滤镜示例
2013/06/28 Javascript
javascript实现给定半径求出圆的面积
2015/06/26 Javascript
判断输入的字符串是否是日期格式的简单方法
2016/07/11 Javascript
JS实现鼠标滑过显示边框的菜单效果
2016/09/21 Javascript
微信小程序request请求后台接口php的实例详解
2017/09/20 Javascript
Bootstrap Table列宽拖动的方法
2018/08/15 Javascript
7个好用的JavaScript技巧分享(译)
2019/05/07 Javascript
vue项目中使用bpmn为节点添加颜色的方法
2020/04/30 Javascript
vue 导航守卫和axios拦截器有哪些区别
2020/12/19 Vue.js
[49:12]完美世界DOTA2联赛PWL S2 Magma vs GXR 第二场 11.29
2020/12/02 DOTA
python requests 使用快速入门
2017/08/31 Python
解决出现Incorrect integer value: '' for column 'id' at row 1的问题
2017/10/29 Python
python抓取文件夹的所有文件
2018/02/27 Python
pandas.DataFrame.to_json按行转json的方法
2018/06/05 Python
PyQt弹出式对话框的常用方法及标准按钮类型
2019/02/27 Python
python pytest进阶之conftest.py详解
2019/06/27 Python
pandas-resample按时间聚合实例
2019/12/27 Python
Python如何将函数值赋给变量
2020/04/28 Python
python能自学吗
2020/06/18 Python
ShellScript面试题一则-ShellScript编程
2014/03/05 面试题
爱心倡议书范文
2014/05/12 职场文书
节水口号标语
2014/06/19 职场文书
北京申奥口号
2014/06/19 职场文书
成本会计实训报告
2014/11/05 职场文书
斗罗大陆八大特殊魂兽,龙族始祖排榜首,第五最残忍(翠魔鸟)
2022/03/18 国漫
vue router 动态路由清除方式
2022/05/25 Vue.js