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中的登陆login
Jan 18 PHP
ecshop 订单确认中显示省市地址信息的方法
Mar 15 PHP
PHP中去除换行解决办法小结(PHP_EOL)
Nov 27 PHP
PHP编程函数安全篇
Jan 08 PHP
YII实现分页的方法
Jul 09 PHP
thinkphp3.2.2实现生成多张缩略图的方法
Dec 19 PHP
PHP5全版本绕过open_basedir读文件脚本漏洞详细介绍
Jan 20 PHP
PHP用反撇号执行外部命令
Apr 14 PHP
php查询及多条件查询
Feb 26 PHP
Thinkphp事务操作实例(推荐)
Apr 01 PHP
PHP使用xpath解析XML的方法详解
May 20 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在程序中将网页生成word文档并提供下载的代码
2012/10/09 PHP
php+Memcached实现简单留言板功能示例
2017/02/15 PHP
yii2中关于加密解密的那些事儿
2018/06/12 PHP
String.prototype实现的一些javascript函数介绍
2013/11/22 Javascript
利用js动态添加删除table行的示例代码
2013/12/16 Javascript
使用jQuery中的when实现多个AJAX请求对应单个回调的例子分享
2014/04/23 Javascript
jQuery中:gt选择器用法实例
2014/12/29 Javascript
DOM基础教程之模型中的模型节点
2015/01/19 Javascript
JS实现至少包含字母、大小写数字、字符的密码等级的两种方法
2015/02/03 Javascript
【经典源码收藏】jQuery实用代码片段(筛选,搜索,样式,清除默认值,多选等)
2016/06/07 Javascript
jQuery插件cxSelect多级联动下拉菜单实例解析
2016/06/24 Javascript
jQuery插件FusionCharts实现的2D面积图效果示例【附demo源码下载】
2017/03/06 Javascript
js学习心得_一个简单的动画库封装tween.js
2017/07/14 Javascript
纯js实现隔行变色效果
2017/11/29 Javascript
简单了解小程序+node梳理登陆流程
2019/06/24 Javascript
layui监听select变化,以及设置radio选中的方法
2019/09/24 Javascript
微信小程序开发摇一摇功能
2019/11/22 Javascript
Vue组件间数据传递的方式(3种)
2020/07/13 Javascript
Mac OS X10.9安装的Python2.7升级Python3.3步骤详解
2013/12/04 Python
python基于pyDes库实现des加密的方法
2017/04/29 Python
Python中一个for循环循环多个变量的示例
2019/07/16 Python
Python paramiko 模块浅谈与SSH主要功能模拟解析
2020/02/29 Python
Python正则表达式学习小例子
2020/03/03 Python
Python3-异步进程回调函数(callback())介绍
2020/05/02 Python
Python脚本实现监听服务器的思路代码详解
2020/05/28 Python
Selenium自动化测试工具使用方法汇总
2020/06/12 Python
利用python绘制中国地图(含省界、河流等)
2020/09/21 Python
香港迪士尼乐园酒店预订:Hong Kong Disneyland Hotels
2017/05/02 全球购物
如何让Java程序执行效率更高
2014/06/25 面试题
Android interview questions
2016/12/25 面试题
奖学金自我鉴定范文
2013/10/03 职场文书
个人自我鉴定范文
2013/10/04 职场文书
商务代表岗位职责
2015/02/15 职场文书
工作能力自我评价2015
2015/03/05 职场文书
学校趣味运动会开幕词
2016/03/04 职场文书
Python基础 括号()[]{}的详解
2021/11/07 Python