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中在数据库中保存Checkbox数据(2)
Oct 09 PHP
PHP 八种基本的数据类型小结
Jun 01 PHP
PHP中HTML标签过滤技巧
Jan 07 PHP
PHP 面向对象程序设计(oop)学习笔记(三) - 单例模式和工厂模式
Jun 12 PHP
主流PHP框架的优缺点对比分析
Dec 25 PHP
php实现通用的信用卡验证类
Mar 24 PHP
PHP生成随机密码方法汇总
Aug 27 PHP
CodeIgniter生成静态页的方法
May 17 PHP
php 自定义错误日志实例详解
Nov 12 PHP
thinkPHP5.0框架简单配置作用域的方法
Mar 17 PHP
PHP实现的数独求解问题示例
Apr 18 PHP
作为PHP程序员你要知道的另外一种日志
Jul 30 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
destoon调用自定义模板及样式的公告栏
2014/06/21 PHP
php实现字符串翻转的方法
2015/03/27 PHP
PHP基于DOM创建xml文档的方法示例
2017/02/08 PHP
基于php编程规范(详解)
2017/08/17 PHP
yii2 上传图片的示例代码
2018/11/02 PHP
浅谈php调用python文件
2019/03/29 PHP
自己做的模拟模态对话框实现代码
2012/05/23 Javascript
JavaScript之AOP编程实例
2015/07/17 Javascript
jQuery Ajax和getJSON获取后台普通json数据和层级json数据用法分析
2016/06/08 Javascript
原生JS实现风箱式demo,并封装了一个运动框架(实例代码)
2016/07/22 Javascript
Javascript获取图片原始宽度和高度的方法详解
2016/09/20 Javascript
简单实现jQuery多选框功能
2017/01/09 Javascript
利用Node.js编写跨平台的spawn语句详解
2017/02/12 Javascript
详解vue与后端数据交互(ajax):vue-resource
2017/03/16 Javascript
jquery.uploadifive插件怎么解决上传限制图片或文件大小问题
2017/05/08 jQuery
JS实现的ajax和同源策略(实例讲解)
2017/12/01 Javascript
js中DOM事件绑定分析
2018/03/18 Javascript
javaScript实现鼠标在文字上悬浮时弹出悬浮层效果
2020/04/12 Javascript
利用vue-i18n实现多语言切换效果的方法
2019/06/19 Javascript
详解基于Vue的支持数据双向绑定的select组件
2019/09/02 Javascript
RxJS在TypeScript中的简单使用详解
2020/04/13 Javascript
[01:30:15]DOTA2-DPC中国联赛 正赛 Ehome vs Aster BO3 第二场 2月2日
2021/03/11 DOTA
python和shell变量互相传递的几种方法
2013/11/20 Python
Python中的XML库4Suite Server的介绍
2015/04/14 Python
python实现周期方波信号频谱图
2018/07/21 Python
使用python验证代理ip是否可用的实现方法
2018/07/25 Python
Python多线程原理与用法实例剖析
2019/01/22 Python
python通用读取vcf文件的类(复制粘贴即可用)
2020/02/29 Python
matplotlib制作雷达图报错ValueError的实现
2021/01/05 Python
浅谈HTML5中dialog元素尝鲜
2018/10/15 HTML / CSS
Linux内核的同步机制是什么?主要有哪几种内核锁
2013/01/03 面试题
应征英语教师求职信
2013/11/27 职场文书
小学生评语集锦
2014/04/18 职场文书
学习礼仪心得体会
2014/09/01 职场文书
2015年第31个教师节致辞
2015/07/31 职场文书
幼儿园体操比赛口号
2015/12/25 职场文书