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学习之PHP运算符
Oct 09 PHP
深入探讨PHP中的内存管理问题
Aug 31 PHP
php获取远程图片的两种 CURL方式和sockets方式获取远程图片
Nov 07 PHP
PHP关于IE下的iframe跨域导致session丢失问题解决方法
Oct 10 PHP
php实现多维数组中每个单元值(数字)翻倍的方法
Feb 16 PHP
php编程每天必学之验证码
Mar 03 PHP
关于ThinkPhp 框架表单验证及ajax验证问题
Jul 19 PHP
PHP实现的回溯算法示例
Aug 15 PHP
PHP单例模式与工厂模式详解
Aug 29 PHP
php 调用百度sms来发送短信的实现示例
Nov 02 PHP
Yii中特殊行为ActionFilter的使用方法示例
Oct 18 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中 ob_start等函数截取标准输出的方法
2015/06/22 PHP
PHP实现带重试功能的curl连接示例
2016/07/28 PHP
HTML页面如何象ASP一样接受参数
2007/02/07 Javascript
如何用JavaScript动态呼叫函数(两种方式)
2013/05/03 Javascript
IE下JS读取xml文件示例代码
2013/08/05 Javascript
js调试系列 控制台命令行API使用方法
2014/06/18 Javascript
Javascript堆排序算法详解
2014/12/03 Javascript
jQuery仅用3行代码实现的显示与隐藏功能完整实例
2015/10/08 Javascript
prototype.js常用函数详解
2016/06/18 Javascript
关于AngularJs数据的本地存储详解
2017/01/20 Javascript
使用openSpeDiv方法实现Ecshop登录弹窗框效果
2017/03/13 Javascript
Vue axios全局拦截 get请求、post请求、配置请求的实例代码
2018/11/28 Javascript
微信小程序如何实现精确的日期时间选择器
2020/01/21 Javascript
如何实现小程序与小程序之间的跳转
2020/11/04 Javascript
解决nuxt页面中mounted、created、watch执行两遍的问题
2020/11/05 Javascript
如何在vue 中引入使用jquery
2020/11/10 jQuery
[03:55]显微镜下的DOTA2特别篇——430灰烬之灵神级操作
2014/06/24 DOTA
Python 字符串操作实现代码(截取/替换/查找/分割)
2013/06/08 Python
Python 爬虫爬取指定博客的所有文章
2016/02/17 Python
Python lambda函数基本用法实例分析
2018/03/16 Python
Python XML转Json之XML2Dict的使用方法
2019/01/15 Python
python数据处理之如何选取csv文件中某几行的数据
2019/09/02 Python
django admin 根据choice字段选择的不同来显示不同的页面方式
2020/05/13 Python
CSS3按钮鼠标悬浮实现光圈效果源码
2016/09/11 HTML / CSS
HTML5实现获取地理位置信息并定位功能
2015/04/25 HTML / CSS
来自全球大都市的高级街头服饰:Pegador
2018/01/03 全球购物
日本AOKI官方商城:AOKI西装
2020/06/11 全球购物
大学生学习党课思想汇报
2014/01/03 职场文书
计生工作先进事迹
2014/08/15 职场文书
计算机实训报告范文
2014/11/05 职场文书
2014年终工作总结范本
2014/12/15 职场文书
电力工程合作意向书
2015/05/11 职场文书
2015年学校心理健康教育工作总结
2015/05/11 职场文书
python 下载文件的几种方式分享
2021/04/07 Python
CSS实现单选折叠菜单功能
2021/11/01 HTML / CSS
Windows Server 2019 配置远程控制以及管理方法
2022/04/28 Servers