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 相关文章推荐
一个阿拉伯数字转中文数字的函数
Oct 09 PHP
php 保留小数点
Apr 21 PHP
使用php实现快钱支付功能(涉及到接口)
Jul 01 PHP
php curl_init函数用法
Jan 31 PHP
PHP计算一年多少个星期和每周的开始和结束日期
Jul 01 PHP
php面向对象中static静态属性和静态方法的调用
Feb 08 PHP
PHP合并discuz用户脚本的方法
Aug 04 PHP
PHP实现的通过参数生成MYSQL语句类完整实例
Apr 11 PHP
PHP中常用的魔术方法
Apr 28 PHP
PHP实现基于栈的后缀表达式求值功能
Nov 10 PHP
PHP实现的权重算法示例【可用于游戏根据权限来随机物品】
Feb 15 PHP
thinkphp 获取控制器及控制器方法
Apr 16 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之第十天
2006/10/09 PHP
destoon利用Rewrite规则设置网站安全
2014/06/21 PHP
Laravel 5框架学习之用户认证
2015/04/09 PHP
PHP实现页面静态化的超简单方法
2016/09/06 PHP
PHP实现超简单的SSL加密解密、验证及签名的方法示例
2017/08/28 PHP
Prototype ObjectRange对象学习
2009/07/19 Javascript
jQuery EasyUI API 中文文档 - NumberBox数字框
2011/10/13 Javascript
JS 打印界面的CSS居中代码适用所有浏览器
2014/03/19 Javascript
深入理解javascript中的立即执行函数(function(){…})()
2014/06/12 Javascript
jquery+easeing实现仿flash的载入动画
2015/03/10 Javascript
浅谈jQuery中ajaxPrefilter的应用
2016/08/01 Javascript
js实现自动轮换选项卡
2017/01/13 Javascript
ES6入门教程之Class和Module详解
2017/05/17 Javascript
jQuery Masonry瀑布流布局神器使用详解
2017/05/25 jQuery
详解Vue中使用Echarts的两种方式
2018/07/03 Javascript
js中自定义react数据验证组件实例详解
2018/10/19 Javascript
微信小程序实现自动定位功能
2018/10/31 Javascript
vue强制刷新组件的方法示例
2019/02/28 Javascript
详解微信小程序开发之formId使用(模板消息)
2019/08/27 Javascript
javascript合并两个数组最简单的实现方法
2019/09/14 Javascript
python使用ctypes模块调用windowsapi获取系统版本示例
2014/04/17 Python
Python实现扣除个人税后的工资计算器示例
2018/03/26 Python
解决python爬虫中有中文的url问题
2018/05/11 Python
Django 模型类(models.py)的定义详解
2019/07/19 Python
python爬虫 爬取58同城上所有城市的租房信息详解
2019/07/30 Python
解决python多线程报错:AttributeError: Can't pickle local object问题
2020/04/08 Python
建筑设计师岗位职责
2013/11/18 职场文书
党校学习自我鉴定
2014/02/24 职场文书
青春飞扬演讲稿
2014/09/11 职场文书
党支部承诺书
2015/01/20 职场文书
先进教师个人主要事迹材料
2015/11/03 职场文书
八年级历史教学反思
2016/02/19 职场文书
小学语文教师竞聘演讲稿范文
2019/08/09 职场文书
如何利用Python实现一个论文降重工具
2021/07/09 Python
Win11黑色桌面背景怎么办?Win11黑色壁纸解决方法汇总
2022/04/05 数码科技
Python尝试实现蒙特卡罗模拟期权定价
2022/04/21 Python