一文搞懂PHP中的抽象类和接口


Posted in PHP onMay 25, 2022

一.抽象类

1.定义

用abstract 关键字来修饰一个类时,这个类就叫抽象类.

用abstract 关键字来修饰一个方法时,这个方法就是抽象方法.

2.应用场景

在实际开发中,我们可能有这样一种类,是其它类的父类,但是它本身并不需要实例化,主要用途是用于让子类来继承(规定子类),这样可以到达代码复用. 同时利于项目设计者来设计类。

3.入门代码

<?php
abstract  class  Man{

   public $name='父类的属性';

   abstract public function add();

}

class Boy extends Man{

    public function add(){
        echo "实现抽象类add方法";
        echo "<pre>";
    }
    public  function  GetName(){
          echo $this->name;
      }
}
$class=new Boy();
$class->add(); //实现抽象类add方法
$class->GetName(); //父类的属性

4.细节

  • 抽象类不能被实例化
  • 抽象类不一定要包含abstract方法。也就是说,抽象类可以没有abstract方法
  • 一旦类包含了abstract方法,则这个类必须声明为abstract
  • 抽象方法不能有函数体
  • 如果一个类继承了某个抽象类,则它必须实现该抽象类的所有抽象方法.(除非它自己也声明为抽象类)

5. 代码分解

a.抽象类不能被实例化

一文搞懂PHP中的抽象类和接口

b.抽象类不一定要包含abstract方法。也就是说,抽象类可以没有abstract方法

一文搞懂PHP中的抽象类和接口

c.一旦类包含了abstract方法,则这个类必须声明为abstract

一文搞懂PHP中的抽象类和接口

d.抽象方法不能有函数体

一文搞懂PHP中的抽象类和接口

e.如果一个类继承了某个抽象类则它必须实现该抽象类的所有抽象方法.(除非它自己也声明为抽象类)

一文搞懂PHP中的抽象类和接口

二.接口

1.定义

接口就是给出一些没有实现的方法,封装到一起,到某个类要使用的时候,在根据具体情况把这些方法写出来。

拿接口来说。接口中定义的方法是聚合了需要实现接口类中必有(公共)的方法,所有实现接口的类有着耦合性,各自类实现接口中定义的方法互不打架。

2. 应用场景

说现在有一个项目经理,管理三个程序员,功能开发一个软件,为了控制和管理软件,项目经理可以定义一些接口,然后由程序员具体实现。

一文搞懂PHP中的抽象类和接口

当多个类 ,他们之间是平级的关系. 这些类都会去实现某个功能,只是实现的方式不一样.

一文搞懂PHP中的抽象类和接口

3.入门代码

<?php
interface a{
    public function  a();
}
interface b{
   public function  b();
}
//接口可以继承接口。类只能单一继承。
interface c extends a,b{
   public function  adc();
}
//c继承了 a和b。所以d要实现c所有的方法。
class  d implements  c{
   public function  a(){

   }
   public function  b(){

   }
   public function  adc(){
       
   }
}

4.注意细节

1.  不能去实例化一个接口

2.  接口中的所有方法,都不能有方法体

3.  一个类可以去实现多个接口

语法:

class 类名 implements 接口1,接口2{
  
}

4.  接口中可以有属性,但是必须是常量,并且是public

interface iUsb{
    const A=90;
  }
  iUsb::A; //调用

5.接口的方法是public 【默认就是public 】 ,不能是 protected 和private

三.类和接口之间关系

一文搞懂PHP中的抽象类和接口

继承和实现接口的比较:

可以认为 实现接口是对单一继承的补充.

可以在不破坏类层级关系的前提下,对某个类功能扩展.

到此这篇关于一文搞懂PHP中的抽象类和接口的文章就介绍到这了!


Tags in this post...

PHP 相关文章推荐
PHP下通过系统信号量加锁方式获取递增序列ID
Sep 25 PHP
PHP 最大运行时间 max_execution_time修改方法
Mar 08 PHP
php图片上传存储源码并且可以预览
Aug 26 PHP
php 抽象类的简单应用
Sep 06 PHP
php压缩HTML函数轻松实现压缩html/js/Css及注意事项
Jan 27 PHP
php数组键值用法实例分析
Feb 27 PHP
php判断linux下程序问题实例
Jul 09 PHP
PHP实现批量清空删除指定文件夹所有内容的方法
May 30 PHP
php判断str字符串是否是xml格式数据的方法示例
Jul 26 PHP
PHP SPL 被遗落的宝石【SPL应用浅析】
Apr 20 PHP
php使用环形链表解决约瑟夫问题完整示例
Aug 07 PHP
PHP实现递归的三种方法
Jul 04 PHP
PHP 时间处理类Carbon
May 20 #PHP
PHP RabbitMQ消息列队
May 11 #PHP
php解析非标准json、非规范json的方式实例
PHP面试题 wakeup魔法 Ezpop pop序列化与反序列化
PHP正则表达式之RCEService回溯
微信小程序结合ThinkPHP5授权登陆后获取手机号
PHP遍历数组的6种方式总结
Nov 17 #PHP
You might like
PHP数据类型之整数类型、浮点数的介绍
2013/04/28 PHP
php字符串过滤与替换小结
2015/01/26 PHP
PHP strtotime函数用法、实现原理和源码分析
2015/02/04 PHP
支付宝服务窗API接口开发php版本
2016/07/20 PHP
详解php协程知识点
2018/09/21 PHP
PHP程序员必须知道的两种日志实例分析
2020/05/14 PHP
使用jquery中height()方法获取各种高度大全
2014/04/02 Javascript
node.js中的定时器nextTick()和setImmediate()区别分析
2014/11/26 Javascript
angularJS 中$scope方法使用指南
2015/02/09 Javascript
PHP+jQuery实现随意拖动层并即时保存拖动位置
2015/04/30 Javascript
JavaScript实现的多种鼠标拖放效果
2015/11/03 Javascript
jsonp跨域请求数据实现手机号码查询实例分析
2015/12/12 Javascript
JS组件Bootstrap实现图片轮播效果
2016/05/16 Javascript
Vue 2.0+Vue-router构建一个简单的单页应用(附源码)
2017/03/14 Javascript
JavaScript实现简单的星星评分效果
2017/05/18 Javascript
vue-cli如何引入bootstrap工具的方法
2017/10/19 Javascript
jquery.onoff实现简单的开关按钮功能(推荐)
2018/05/24 jQuery
nest.js 使用express需要提供多个静态目录的操作方法
2019/10/24 Javascript
基于 Vue 的 Electron 项目搭建过程图文详解
2020/07/22 Javascript
[03:20]次级联赛厮杀超职业 现超级兵对拆世纪大战
2014/10/30 DOTA
Python基于更相减损术实现求解最大公约数的方法
2018/04/04 Python
python字符串循环左移
2019/03/08 Python
如何把python项目部署到linux服务器
2020/08/26 Python
HTML5 progress和meter控件_动力节点Java学院整理
2017/07/06 HTML / CSS
韩国三星集团旗下时尚品牌官网:SSF SHOP
2016/08/02 全球购物
ghd法国官方网站:英国最受欢迎的美发工具品牌
2019/04/18 全球购物
美国基督教约会网站:ChristianCafe.com
2020/02/04 全球购物
机械电子工程毕业生自荐信
2013/11/23 职场文书
工作自我评价怎么写
2014/01/29 职场文书
数字化校园建设方案
2014/05/03 职场文书
关于教师节的广播稿
2014/09/10 职场文书
机关中层领导干部群众路线教育实践活动个人对照检查材料
2014/09/24 职场文书
乌镇导游词
2015/02/02 职场文书
2016国培研修心得体会
2016/01/08 职场文书
Python 用户输入和while循环的操作
2021/05/23 Python
解析mybatis-plus中的resultMap简单使用
2021/11/23 Java/Android