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&amp;&amp;mysql)六
Oct 09 PHP
如何在symfony中导出为CSV文件中的数据
Oct 06 PHP
使用php+Ajax实现唯一校验实现代码[简单应用]
Nov 29 PHP
PHP jQuery表单,带验证具体实现方法
Feb 15 PHP
php计算当前程序执行时间示例
Apr 24 PHP
PHP四种基本排序算法示例
Apr 09 PHP
PHP实现加强版加密解密类实例
Jul 29 PHP
php防止用户重复提交表单
Nov 02 PHP
yii2使用GridView实现数据全选及批量删除按钮示例
Mar 01 PHP
利用PHP访问MySql数据库的逻辑操作以及增删改查的实例讲解
Aug 30 PHP
php xhprof使用实例详解
Apr 15 PHP
laravel dingo API返回自定义错误信息的实例
Sep 29 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实现httpRequest的方法
2015/03/13 PHP
Joomla简单判断用户是否登录的方法
2016/05/04 PHP
PHP的介绍以及优势详细分析
2019/09/05 PHP
jquery对单选框,多选框,文本框等常见操作小结
2014/01/08 Javascript
jQuery不兼容input的change事件问题解决过程
2014/12/05 Javascript
无刷新上传文件并返回自定义值
2015/06/11 Javascript
jquery实现叠层3D文字特效代码分享
2015/08/21 Javascript
JavaScript中省略元素对数组长度的影响
2016/10/26 Javascript
JS实现根据用户输入分钟进行倒计时功能
2016/11/14 Javascript
微信小程序 rich-text的使用方法
2017/08/04 Javascript
JS获取字符对应的ASCII码实例
2017/09/10 Javascript
vue-better-scroll 的使用实例代码详解
2018/12/03 Javascript
巧妙运用v-model实现父子组件传值的方法示例
2019/04/07 Javascript
python类继承与子类实例初始化用法分析
2015/04/17 Python
Python中输出ASCII大文字、艺术字、字符字小技巧
2015/04/28 Python
Python2.7编程中SQLite3基本操作方法示例
2017/08/09 Python
Python3 queue队列模块详细介绍
2018/01/05 Python
详解Python使用tensorflow入门指南
2018/02/09 Python
Python中字符串List按照长度排序
2019/07/01 Python
python框架flask表单实现详解
2019/11/04 Python
Python hashlib加密模块常用方法解析
2019/12/18 Python
NUK奶瓶美国官网:NUK美国
2016/09/26 全球购物
Daisy London官网:英国最大的首饰集团IBB旗下
2019/02/28 全球购物
《美丽的公鸡》教学反思
2014/02/25 职场文书
网络工程师自荐书范文
2014/04/01 职场文书
活动总结报告格式
2014/05/09 职场文书
服装发布会策划方案
2014/05/22 职场文书
司法所长先进事迹
2014/06/02 职场文书
民事授权委托书范文
2014/08/02 职场文书
大学生职业生涯十年规划书范文
2014/09/17 职场文书
建筑安全员岗位职责
2015/02/15 职场文书
幼儿园圣诞节活动总结
2015/05/06 职场文书
干部培训工作总结2015
2015/05/25 职场文书
简单介绍Python的第三方库yaml
2021/06/18 Python
CSS实现两列布局的N种方法
2021/08/02 HTML / CSS
Navicat Premium自定义 sql 标签的创建方式
2022/09/23 数据库