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 中英文混合排版中处理字符串常用的函数
Apr 12 PHP
php cookie 作用范围?不要在当前页面使用你的cookie
Mar 24 PHP
PHP5 的对象赋值机制介绍
Aug 02 PHP
解决文件名解压后乱码的问题 将文件名进行转码的代码
Jan 10 PHP
PHP PDOStatement对象bindpram()、bindvalue()和bindcolumn之间的区别
Nov 20 PHP
php生成固定长度纯数字编码的方法
Jul 09 PHP
基于PHP+jQuery+MySql实现红蓝(顶踩)投票代码
Aug 25 PHP
php中session定期自动清理的方法
Nov 12 PHP
基于php实现七牛抓取远程图片
Dec 01 PHP
CodeIgniter多语言实现方法详解
Jan 20 PHP
YII中Ueditor富文本编辑器文件和图片上传的配置图文教程
Mar 15 PHP
PHP信号处理机制的操作代码讲解
Apr 19 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 CURL获取cookies模拟登录的方法
2013/11/04 PHP
在JavaScript中实现命名空间
2006/11/23 Javascript
jQuery的live()方法对hover事件的处理示例
2014/02/27 Javascript
js全选实现和判断是否有复选框选中的方法
2015/02/17 Javascript
jQuery基于ajax实现带动画效果无刷新柱状图投票代码
2015/08/10 Javascript
JS实现点击复选框将按钮或文本框变为灰色不可用的方法
2015/08/11 Javascript
jQuery实现的Tab滑动选项卡及图片切换(多种效果)小结
2015/09/14 Javascript
基于JavaScript实现网页倒计时自动跳转代码
2015/12/28 Javascript
jquery ajax后台返回list,前台用jquery遍历list的实现
2016/10/30 Javascript
浅谈angular2的http请求返回结果的subcribe注意事项
2017/03/01 Javascript
微信小程序教程系列之视图层的条件渲染(10)
2017/04/19 Javascript
AngularJS表单验证功能分析
2017/05/26 Javascript
vue组件实现弹出框点击显示隐藏效果
2020/10/26 Javascript
Vuex mutitons和actions初使用详解
2019/03/04 Javascript
js实现简单页面全屏
2019/09/17 Javascript
Vue——前端生成二维码的示例
2020/12/19 Vue.js
使用py2exe在Windows下将Python程序转为exe文件
2016/03/04 Python
python 回调函数和回调方法的实现分析
2016/03/23 Python
python去除空格和换行符的实现方法(推荐)
2017/01/04 Python
Python使用回溯法子集树模板解决爬楼梯问题示例
2017/09/08 Python
解决python selenium3启动不了firefox的问题
2018/10/13 Python
Python操作qml对象过程详解
2019/09/26 Python
Django中自定义查询对象的具体使用
2019/10/13 Python
Python imread、newaxis用法详解
2019/11/04 Python
Sixt美国租车:高端豪华车型自驾体验
2017/09/02 全球购物
英国IT硬件供应商,定制游戏PC:Mesh Computers
2019/03/28 全球购物
AJAX的全称是什么
2012/11/06 面试题
教师找工作推荐信
2013/11/23 职场文书
应届毕业生个人求职信范文
2014/01/29 职场文书
我的中国梦演讲稿初中篇
2014/08/19 职场文书
学生会竞选演讲稿学习部
2014/08/25 职场文书
商务代表岗位职责
2015/02/15 职场文书
护士爱岗敬业心得体会
2016/01/25 职场文书
Python生成九宫格图片的示例代码
2021/04/14 Python
MySQL的join buffer原理
2021/04/29 MySQL
Windows和Linux上部署Golang并运行程序
2022/04/22 Servers