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 相关文章推荐
PHPMyAdmin 快速配置方法
May 11 PHP
PHP 根据IP地址控制访问的代码
Apr 22 PHP
Php Image Resize图片大小调整的函数代码
Jan 17 PHP
在smarty模板中使用PHP函数的方法
Apr 23 PHP
PHP中call_user_func_array()函数的用法演示
Feb 05 PHP
PHP 查找字符串常用函数介绍
Jun 07 PHP
PHP不用第三变量交换2个变量的值的解决方法
Jun 02 PHP
PHP获取表单所有复选框的值的方法
Aug 28 PHP
JSON两种结构之对象和数组的理解
Jul 19 PHP
PHP简单创建压缩图的方法
Aug 24 PHP
yii2安装详细流程
May 23 PHP
Laravel 框架控制器 Controller原理与用法实例分析
Apr 14 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的变量总结 新手推荐
2011/04/18 PHP
php使用Smarty的相关注意事项及访问变量的几种方式
2011/12/08 PHP
php反射应用示例
2014/02/25 PHP
Linux下安装oracle客户端并配置php5.3
2014/10/12 PHP
必须收藏的php实用代码片段
2016/02/02 PHP
PHP递归遍历多维数组实现无限分类的方法
2016/05/06 PHP
php中static 静态变量和普通变量的区别
2016/12/01 PHP
Thinkphp3.2实用篇之计算型验证码示例
2017/02/09 PHP
php插件Xajax使用方法详解
2017/08/31 PHP
获取Javscript执行函数名称的方法
2006/12/22 Javascript
js判断变量是否未定义的代码
2020/03/28 Javascript
javascript错误的认识不用关心内存管理
2012/12/15 Javascript
JavaScript 在网页上单击鼠标的地方显示层及关闭层
2012/12/30 Javascript
Window.Open如何在同一个标签页打开
2014/06/20 Javascript
使用js实现的简单拖拽效果
2015/03/18 Javascript
有关suggest快速删除后仍然出现下拉列表的bug问题
2016/12/02 Javascript
利用vue+elementUI实现部分引入组件的方法详解
2017/11/22 Javascript
对mac下nodejs 更新到最新版本的最新方法(推荐)
2018/05/17 NodeJs
layui 设置table 行的高度方法
2018/08/17 Javascript
微信小程序实现的一键连接wifi功能示例
2019/04/24 Javascript
JS实现电脑虚拟键盘的操作
2020/06/24 Javascript
js canvas实现俄罗斯方块
2020/10/11 Javascript
vue使用exif获取图片经纬度的示例代码
2020/12/11 Vue.js
[01:08:44]NB vs VP 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
教你用Type Hint提高Python程序开发效率
2016/08/08 Python
Python3学习urllib的使用方法示例
2017/11/29 Python
Python实现PS图像调整黑白效果示例
2018/01/25 Python
利用Python如何生成便签图片详解
2018/07/09 Python
python如何实现不用装饰器实现登陆器小程序
2019/12/14 Python
在python中修改.properties文件的操作
2020/04/08 Python
python pymysql库的常用操作
2020/10/16 Python
Luxplus瑞典:香水和美容护理折扣
2018/01/28 全球购物
Piercing Pagoda官网:耳环、戒指、项链、手链等
2020/09/28 全球购物
怎样声明接口
2014/09/19 面试题
SQL Server笔试题
2012/01/10 面试题
廉政承诺书
2015/01/19 职场文书