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 相关文章推荐
MYSQL环境变量设置方法
Jan 15 PHP
PHP is_dir() 判断给定文件名是否是一个目录
May 10 PHP
hadoop常见错误以及处理方法详解
Jun 19 PHP
php文件夹与文件目录操作函数介绍
Sep 09 PHP
配置php网页显示各种语法错误
Sep 23 PHP
PHP aes (ecb)解密后乱码问题
Jun 22 PHP
整理php防注入和XSS攻击通用过滤
Sep 13 PHP
实例详解PHP中html word 互转的方法
Jan 28 PHP
PHP将身份证正反面两张照片合成一张图片的代码
Apr 08 PHP
windows下的WAMP环境搭建图文教程(推荐)
Jul 27 PHP
Yii2框架中使用PHPExcel导出Excel文件的示例
Aug 09 PHP
php获取小程序码的实现代码(B类接口)
Jun 13 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实现的功能是显示8条基色色带
2006/10/09 PHP
smarty+adodb+部分自定义类的php开发模式
2006/12/31 PHP
PHP 基于文件头的文件类型验证类函数
2012/05/01 PHP
thinkphp3.2.3版本的数据库增删改查实现代码
2016/09/22 PHP
Nginx环境下PHP flush失效的解决方法
2016/10/19 PHP
dojo 之基础篇
2007/03/24 Javascript
JavaScript 继承详解 第一篇
2009/08/30 Javascript
jquery使用slideDown实现模块缓慢拉出效果的方法
2015/03/27 Javascript
js阻止浏览器默认行为触发的通用方法(推荐)
2016/05/15 Javascript
jQuery实现根据滚动条位置加载相应内容功能
2016/07/18 Javascript
angular+ionic 的app上拉加载更新数据实现方法
2017/01/16 Javascript
Vue基于NUXT的SSR详解
2017/10/24 Javascript
浅谈es6 javascript的map数据结构
2017/12/14 Javascript
javascript数据结构之多叉树经典操作示例【创建、添加、遍历、移除等】
2018/08/01 Javascript
js实现每日签到功能
2018/11/29 Javascript
python装饰器与递归算法详解
2016/02/18 Python
python3实现UDP协议的服务器和客户端
2017/06/14 Python
Python设计模式之工厂模式简单示例
2018/01/09 Python
Tensorflow 自带可视化Tensorboard使用方法(附项目代码)
2018/02/10 Python
使用Python进行目录的对比方法
2018/11/01 Python
Python3内置模块之base64编解码方法详解
2019/07/13 Python
详解用python生成随机数的几种方法
2019/08/04 Python
6行Python代码实现进度条效果(Progress、tqdm、alive-progress​​​​​​​和PySimpleGUI库)
2020/01/06 Python
基于Python获取照片的GPS位置信息
2020/01/20 Python
python numpy数组中的复制知识解析
2020/02/03 Python
html5 postMessage前端跨域并前端监听的方法示例
2018/11/01 HTML / CSS
ProBikeKit美国官网:自行车套件,跑步和铁人三项套件
2016/10/13 全球购物
在网上学习全世界最好的课程:Coursera
2017/11/07 全球购物
西班牙著名的珠宝首饰品牌:P D PAOLA
2018/09/15 全球购物
Hotels.com加拿大:领先的在线住宿网站
2018/10/05 全球购物
GAZMAN官网:澳大利亚领先的男装品牌
2019/12/19 全球购物
应届毕业生求职信范文分享
2013/12/26 职场文书
小学生优秀评语
2014/12/29 职场文书
培训师岗位职责
2015/02/14 职场文书
Windows server 2022创建创建林、域树、子域的步骤
2022/06/25 Servers
PostgreSQL逻辑复制解密原理解析
2022/09/23 PostgreSQL