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 相关文章推荐
php防攻击代码升级版
Dec 29 PHP
php中使用cookie来保存用户登录信息的实现代码
Mar 08 PHP
浅析PHP中的UNICODE 编码与解码
Jun 29 PHP
PHP代码优化之成员变量获取速度对比
Feb 28 PHP
PHP curl 抓取AJAX异步内容示例
Sep 09 PHP
php使用fputcsv()函数csv文件读写数据的方法
Jan 06 PHP
用PHP代码给图片加水印
Jul 01 PHP
php随机显示指定文件夹下图片的方法
Jul 13 PHP
PHP使用内置函数生成图片的方法详解
May 09 PHP
PHP实现的随机IP函数【国内IP段】
Jul 20 PHP
php json中文编码为null的解决办法
Dec 14 PHP
thinkphp框架实现路由重定义简化url访问地址的方法分析
Apr 04 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.ini实现Mysql导入数据库文件最大限制的修改方法
2007/12/11 PHP
Paypal实现循环扣款(订阅)功能
2017/03/23 PHP
用javascript获取地址栏参数
2006/12/22 Javascript
JS 非图片动态loading效果实现代码
2010/04/09 Javascript
JS中setInterval、setTimeout不能传递带参数的函数的解决方案
2013/04/28 Javascript
SwfUpload在IE10上不出现上传按钮的解决方法
2013/06/25 Javascript
js用typeof方法判断undefined类型
2014/07/15 Javascript
jQuery+json实现的简易Ajax调用实例
2015/12/14 Javascript
原生JS实现风箱式demo,并封装了一个运动框架(实例代码)
2016/07/22 Javascript
Vue.2.0.5过渡效果使用技巧
2017/03/16 Javascript
微信小程序实战之自定义模态弹窗(8)
2017/04/18 Javascript
JavaScript无操作后屏保功能的实现方法
2017/07/04 Javascript
动态加载JavaScript文件的3种方式
2018/05/05 Javascript
vue+springmvc导出excel数据的实现代码
2018/06/27 Javascript
vue实现日历备忘录功能
2020/09/24 Javascript
vue-router路由模式详解(小结)
2019/08/26 Javascript
layer.open弹层查看缩略图的原图,自适应大小的实例
2019/09/05 Javascript
js验证账户名是否重复
2020/05/26 Javascript
Vue filter 过滤器、以及在table中的使用介绍
2020/09/07 Javascript
JavaScript/TypeScript 实现并发请求控制的示例代码
2021/01/18 Javascript
详解Python中的__init__和__new__
2014/03/12 Python
实例讲解Python的函数闭包使用中应注意的问题
2016/06/20 Python
python实现矩阵打印
2019/03/02 Python
python快速编写单行注释多行注释的方法
2019/07/31 Python
对python中list的五种查找方法说明
2020/07/13 Python
python装饰器实现对异常代码出现进行自动监控的实现方法
2020/09/15 Python
Python实现微信表情包炸群功能
2021/01/28 Python
英国最大的电脑零售连锁店集团:PC World
2016/10/10 全球购物
加拿大百叶窗和窗帘定制网站:Blinds
2017/01/30 全球购物
将一个文本文件的内容按倒序打印出来
2015/01/05 面试题
2014年学习全国道德模范事迹思想汇报
2014/09/15 职场文书
学校2014年度工作总结
2014/12/06 职场文书
爱情保证书
2015/01/17 职场文书
欢迎词范文
2015/01/27 职场文书
2016党校学习心得体会
2016/01/07 职场文书
解析探秘fescar分布式事务实现原理
2022/02/28 Java/Android