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 相关文章推荐
?生?D片??C字串
Dec 06 PHP
php 验证码制作(网树注释思想)
Jul 20 PHP
php面向对象全攻略 (三)特殊的引用“$this”的使用
Sep 30 PHP
php中随机显示图片的函数代码
Jun 23 PHP
php中经典方法实现判断多维数组是否为空
Oct 23 PHP
PHP基础之运算符的使用方法
Apr 28 PHP
PHP自定义大小验证码的方法详解
Jun 07 PHP
Discuz批量替换帖子内容的方法(使用SQL更新数据库)
Jun 23 PHP
php常用图片处理类
Mar 16 PHP
PHP实现对xml的增删改查操作案例分析
May 19 PHP
PHP如何使用JWT做Api接口身份认证的实现
Feb 03 PHP
php慢查询日志和错误日志使用详解
Feb 27 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中用加号与用array_merge合并数组的区别深入分析
2013/06/03 PHP
php的数组与字符串的转换函数整理汇总
2013/07/18 PHP
php读取excel文件示例分享(更新修改excel)
2014/02/27 PHP
一组PHP加密解密函数分享
2014/06/05 PHP
通过javascript设置css属性的代码
2009/12/28 Javascript
图片onload事件触发问题解决方法
2011/07/31 Javascript
能说明你的Javascript技术很烂的五个原因分析
2011/10/28 Javascript
鼠标划过实现延迟加载并隐藏层的js代码
2013/10/11 Javascript
juery框架写的弹窗效果适合新手
2013/11/27 Javascript
jquery跟js初始化加载的多种方法及区别介绍
2014/04/02 Javascript
跟我学习javascript的循环
2015/11/18 Javascript
全面解析JavaScript中的valueOf与toString方法(推荐)
2016/06/14 Javascript
Select下拉框模糊查询功能实现代码
2016/07/22 Javascript
js实现千分符和保留几位小数的简单实例
2016/08/01 Javascript
JavaScript标准对象_动力节点Java学院整理
2017/06/27 Javascript
Angular4学习之Angular CLI的安装与使用教程
2018/01/04 Javascript
浅谈layer的Icon样式以及一些常用的layer窗口使用方法
2019/09/11 Javascript
javascript 构建模块化开发过程解析
2019/09/11 Javascript
解决layer 动态加载select 失效的问题
2019/09/18 Javascript
layui table 复选框跳页后再回来保持原来选中的状态示例
2019/10/26 Javascript
原生js实现二级联动菜单
2019/11/27 Javascript
JSONP 的原理、理解 与 实例分析
2020/05/16 Javascript
vue实现简单计算商品价格
2020/09/14 Javascript
利用node.js开发cli的完整步骤
2020/12/29 Javascript
Pandas 数据处理,数据清洗详解
2018/07/10 Python
浅析Python 读取图像文件的性能对比
2019/03/07 Python
python调用其他文件函数或类的示例
2019/07/16 Python
python 下载m3u8视频的示例代码
2020/11/11 Python
Python图像读写方法对比
2020/11/16 Python
大学生职业生涯规划方案
2014/01/03 职场文书
中学生校园广播稿
2014/01/16 职场文书
给学校的建议书范文
2014/05/15 职场文书
综合素质自我评价评语
2015/03/06 职场文书
专家推荐信怎么写
2015/03/25 职场文书
《敬重卑微》读后感3篇
2019/11/26 职场文书
pandas进行数据输入和输出的方法详解
2022/03/23 Python