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(1)
Oct 09 PHP
PHP脚本的10个技巧(2)
Oct 09 PHP
php下用cookie统计用户访问网页次数的代码
May 09 PHP
探讨如何在php168_cms中提取验证码
Jun 08 PHP
PHP 如何利用phpexcel导入数据库
Aug 24 PHP
PHP jQuery表单,带验证具体实现方法
Feb 15 PHP
PHP获取数组中重复最多的元素的实现方法
Nov 11 PHP
基于ThinkPHP实现批量删除
Dec 18 PHP
Thinkphp实现站点静态化的方法详解
Mar 21 PHP
PHP回调函数与匿名函数实例详解
Aug 16 PHP
利用PHP如何统计Nginx日志的User Agent数据
Mar 06 PHP
PHP中define() 与 const定义常量的区别详解
Jun 25 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者的疑难问答(2)
2006/10/09 PHP
PHP 的 __FILE__ 常量
2007/01/15 PHP
PHP stripos()函数及注意事项的分析
2013/06/08 PHP
PHP学习笔记之字符串编码的转换和判断
2014/05/22 PHP
PHP实现抓取迅雷VIP账号的方法
2015/07/30 PHP
PHP实现图片上传并压缩
2015/12/22 PHP
PHP回调函数简单用法示例
2019/05/08 PHP
如何解决Jquery库及其他库之间的$命名冲突
2013/09/15 Javascript
javascript实现多栏闭合展开式广告位菜单效果实例
2015/08/05 Javascript
javascript计时器编写过程与实现方法
2016/02/29 Javascript
javascript中arguments,callee,caller详解
2016/03/16 Javascript
通俗解释JavaScript正则表达式快速记忆
2017/08/23 Javascript
Javascript快速实现浏览器系统通知
2017/08/26 Javascript
nodejs中art-template模板语法的引入及冲突解决方案
2017/11/07 NodeJs
Vue父子传递实例讲解
2020/02/14 Javascript
JavaScript定时器使用方法详解
2020/03/26 Javascript
Vue页面渲染中key的应用实例教程
2021/01/12 Vue.js
python web基础之加载静态文件实例
2018/03/20 Python
使用python实现快速搭建简易的FTP服务器
2018/09/12 Python
Linux下python3.6.1环境配置教程
2018/09/26 Python
python中如何使用分步式进程计算详解
2019/03/22 Python
解决python3中的requests解析中文页面出现乱码问题
2019/04/19 Python
解决python中导入win32com.client出错的问题
2019/07/26 Python
python滑块验证码的破解实现
2019/11/10 Python
Python CSV文件模块的使用案例分析
2019/12/21 Python
python中用ctypes模拟点击的实例讲解
2020/11/26 Python
详解CSS3中nth-child与nth-of-type的区别
2017/01/05 HTML / CSS
文化建设工作方案
2014/05/12 职场文书
应聘教师自荐书
2014/06/16 职场文书
大学生个人总结范文
2015/02/15 职场文书
幼儿园毕业典礼园长致辞
2015/07/29 职场文书
2019年让高校“心动”的自荐信
2019/03/25 职场文书
《天使的翅膀》读后感3篇
2019/12/20 职场文书
Python基础教程,Python入门教程(超详细)
2021/06/24 Python
Python实现抖音热搜定时爬取功能
2022/03/16 Python
PyTorch中的torch.cat简单介绍
2022/03/17 Python