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 相关文章推荐
PHP4中session登录页面的应用
Jul 25 PHP
创建数据库php代码 用PHP写出自己的BLOG系统
Apr 12 PHP
php 中英文语言转换类代码
Aug 11 PHP
PHP动态创建Web站点的方法
Aug 14 PHP
解析CI的AJAX分页 另类实现方法
Jun 27 PHP
ThinkPHP中的系统常量和预定义常量集合
Jul 01 PHP
浅谈PHP中JSON数据操作
Jul 01 PHP
PHP使用pear自带的mail类库发邮件的方法
Jul 08 PHP
PHP的Yii框架的常用日志操作总结
Dec 08 PHP
yii的入口文件index.php中为什么会有这两句
Aug 04 PHP
php创建多级目录与级联删除文件的方法示例
Sep 12 PHP
PHP 实现缩略图
Mar 09 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上传文件常见问题总结
2015/02/03 PHP
php微信高级接口群发 多客服
2016/06/23 PHP
PHP7新功能总结
2019/04/14 PHP
jquery滚动加载数据的方法
2015/03/09 Javascript
深入理解(function(){... })();
2016/08/16 Javascript
js实现文字列表无缝滚动效果
2017/06/23 Javascript
在vue中实现简单页面逆传值的方法
2017/11/27 Javascript
swiper移动端轮播插件(触碰图片之后停止轮播)
2017/12/28 Javascript
js保留两位小数方法总结
2018/01/31 Javascript
Vue引入sass并配置全局变量的方法
2018/06/27 Javascript
jQuery中each遍历的三种方法实例分析
2018/09/07 jQuery
angular的输入和输出的使用方法
2018/09/22 Javascript
4个顶级开源JavaScript图表库
2018/09/29 Javascript
vue2.0 路由模式mode=&quot;history&quot;的作用
2018/10/18 Javascript
详解小程序开发经验:多页面数据同步
2019/05/18 Javascript
原生JS运动实现轮播图
2021/01/02 Javascript
python通过加号运算符操作列表的方法
2015/07/28 Python
Python爬虫之模拟知乎登录的方法教程
2017/05/25 Python
Python实现Smtplib发送带有各种附件的邮件实例
2017/06/05 Python
Django与JS交互的示例代码
2017/08/23 Python
Python利用pandas计算多个CSV文件数据值的实例
2018/04/19 Python
python读取xml文件方法解析
2020/08/04 Python
详解Selenium 元素定位和WebDriver常用方法
2020/12/04 Python
家庭睡衣和家庭用品:Little Blue House
2018/03/18 全球购物
俄罗斯珠宝市场的领导者之一:Бронницкий ювелир
2019/10/02 全球购物
庆祝教师节活动方案
2014/01/31 职场文书
校园安全演讲稿
2014/05/09 职场文书
违规违纪检讨书范文
2015/05/06 职场文书
昆虫记读书笔记
2015/06/26 职场文书
网吧温馨提示
2015/07/17 职场文书
2016党性教育学习心得体会
2016/01/21 职场文书
导游词之峨眉乐山/兵马俑/北京故宫御花园
2019/09/03 职场文书
解决pytorch读取自制数据集出现过的问题
2021/05/31 Python
Java日常练习题,每天进步一点点(38)
2021/07/26 Java/Android
动画电影《擅长捉弄人的高木同学》6月10日上映!
2022/03/20 日漫
Java使用HttpClient实现文件下载
2022/08/14 Java/Android