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 相关文章推荐
BBS(php &amp; mysql)完整版(六)
Oct 09 PHP
php调用mysql存储过程
Feb 14 PHP
利用discuz自带通行证整合dedecms的方法以及文件下载
Mar 06 PHP
PHP cron中的批处理
Sep 16 PHP
PHP daddslashes 使用方法介绍
Oct 26 PHP
php清空(删除)指定目录下的文件,不删除目录文件夹的实现代码
Sep 04 PHP
PHP实现的带超时功能get_headers函数
Feb 10 PHP
怎样搭建PHP开发环境
Jul 28 PHP
jquery+thinkphp实现跨域抓取数据的方法
Oct 15 PHP
PHP+iframe图片上传实现即时刷新效果
Nov 18 PHP
php断点续传之文件分割合并详解
Dec 13 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式二图文详解
Apr 09 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中获取文件扩展名的N种方法小结
2012/02/27 PHP
php中unlink()、mkdir()、rmdir()等方法的使用介绍
2012/12/21 PHP
Zend Framework动作助手(Zend_Controller_Action_Helper)用法详解
2016/03/05 PHP
PHP实现图片批量打包下载功能
2017/03/01 PHP
显示js对象所有属性和方法的函数
2009/10/16 Javascript
script标签的 charset 属性使用说明
2010/12/04 Javascript
javascript for循环从入门到偏门(效率优化+奇特用法)
2012/08/01 Javascript
js实现省市联动效果的简单实例
2014/02/10 Javascript
Blocksit插件实现瀑布流数据无限( 异步)加载
2014/06/20 Javascript
基于jQuery实现美观且实用的倒计时实例代码
2015/12/30 Javascript
jQuery点击其他地方时菜单消失的实现方法
2016/04/22 Javascript
js实现滑动到页面底部自动加载更多功能
2017/02/15 Javascript
前端跨域的几种解决方式总结(推荐)
2017/08/16 Javascript
JS实现十分钟倒计时代码实例
2018/10/18 Javascript
vue实现pdf导出解决生成canvas模糊等问题(推荐)
2018/10/18 Javascript
jQuery实现动态生成年月日级联下拉列表示例
2019/05/11 jQuery
通过angular CDK实现页面元素拖放的步骤详解
2020/07/01 Javascript
javascript实现移动端上传图片功能
2020/08/18 Javascript
JavaScript实现下拉列表
2021/01/20 Javascript
python二叉树的实现实例
2013/11/21 Python
详解Python程序与服务器连接的WSGI接口
2015/04/29 Python
Python http接口自动化测试框架实现方法示例
2018/12/06 Python
Python使用扩展库pywin32实现批量文档打印实例
2020/04/09 Python
Matlab使用Plot函数实现数据动态显示方法总结
2021/02/25 Python
美国指甲油品牌:Deco Miami
2017/01/30 全球购物
Can a struct inherit from another struct? (结构体能继承结构体吗)
2016/09/25 面试题
工程概预算专业毕业生求职信
2013/10/04 职场文书
车间统计员岗位职责
2014/01/05 职场文书
会计师职业生涯规划范文
2014/02/18 职场文书
工程承诺书怎么写
2014/05/24 职场文书
小学语文业务学习材料
2014/06/02 职场文书
社区文艺活动方案
2014/08/19 职场文书
2014年少先队工作总结
2014/12/03 职场文书
中学综治宣传月活动总结
2015/05/07 职场文书
汽车销售员工作总结
2015/08/12 职场文书
Nginx如何获取自定义请求header头和URL参数详解
2022/07/23 Servers