/**

* 接口类:interface

* 其实他们的作用很简单,当有很多人一起开发一个项目时,可能都会去调用别人写的一些类,

* 那你就会问,我怎么知道他的某个功能的实现方法是怎么命名的呢,这个时候php接口类就起到作用了,

* 当我们定义了一个接口类时,它里面的方式是下面的子类必须实现的。

*/

interface Shop

{

public function buy($gid);

public function sell($gid);

public function view($gid);

}

/**

* Interface Shop

* 声明一个shop接口类,定义了三个方法:买(buy),卖(sell),看(view),

* 那么继承此类的所有子类都必须实现这3个方法,少一个都不行,如果子类没有实现这些话,就无法运行。

* 实际上接口类说白了,就是一个类的模板,一个类的规定,

* 如果你继承此类这类,你就必须遵循我的规定,少一个都不行,但是具体怎么做,我不管,那是你的事

*

* 结论 :接口类就是一个类的领导者,指明方向,子类必须完成它指定方法。

*/

class BaseShop implements Shop

{

public function buy($gid)

{

echo('你购买了ID为'.$gid.'的商品');

}

public function sell($gid)

{

echo('你销售了ID为'.$gid.'的商品');

}

public function view($gid)

{

echo('你查看了ID为'.$gid.'的商品');

}

}

$shop = new BaseShop();

echo $shop->buy(123).PHP_EOL;

echo $shop->sell(456).PHP_EOL;

echo $shop->view(789).PHP_EOL.PHP_EOL;

/**

* --------------------------------------------------------------------------------

*/

/**

* 抽象类:abstract

* 其实抽象类和接口类有一部分很像,记得在哪里看见这样一句话,抽象类就把类 相似的部分抽出来,

* 这句看上去很搞笑,其实它说出了抽象类的真理,抽象类的作用是,当你发现你的很多类里面用很多方法你不断的在重复写,那你就可以考虑使用抽象类了,

* 你可能会说“我不是可以重写一个类每个公共类我个实例化一个这个公共类,调用相同的方法就可以了”,

* 这里是可以,实际上抽象类做的工作也就是这个,不过他省去了你实例化的这个步骤,让你就像直接调用本类方法一样方便,而且你还可以重载这个方法。

*/

abstract class ShopCart

{

public function buy($gid)

{

echo('你购买了ID为'.$gid.'的商品');

}

public function sell($gid)

{

echo('你销售了ID为'.$gid.'的商品');

}

public function view($gid)

{

echo('你查看了ID为'.$gid.'的商品');

}

}

/**

* 这里是一个例子,想上面一样我定义了一个商店类,抽出了它所有像的部分,买(buy),卖(sell),看(view),

* 并且抽象类里都实现了这些方法,那么继承它的子类就自动获得了这些方法,子类就做它自己独特的东西,介绍代码的重复,提高复用性。

*

* 结论:抽象类就是一个类的服务提供商,拥有众多服务,非必须使用,当需要的时候调用即可,如果你觉得提供服务的不满足,你可以自己来做。

*/

class newShop extends ShopCart

{

var $itme_id = null;

public function __construct($id)

{

$this->itme_id = $id;

}

public function sell2()

{

$this->sell($this->itme_id);

}

public function down($item)

{

echo('你下架了ID为'.$item.'的商品');

}

}

$newShop = new newShop(100);

echo $newShop->buy(123).PHP_EOL;

echo $newShop->sell(456).PHP_EOL;

echo $newShop->view(789).PHP_EOL;

echo $newShop->sell2().PHP_EOL;

echo $newShop->down(222).PHP_EOL;

PHP接口类interface的正确使用方法

对于那些初学PHP语言的人来说,对于PHP的接口类也许了解的还不是很深入,接下来我们就来具体讲述PHP接口类interface的使用方法. 如何正确运用PHP XMLReader解析XML文档 深入解 ...

PHP接口类interface使用方法

PHP同大多数的面向对象语言一样,并不支持多重继承.少数支持多重继承的语言中最著名的就是C++和Smalltalk.如果需要实现多重继承功能,在PHP中,可以通过接口,它是PHP解决多重继承问题的方法 ...

PHP接口(interface)和抽象类(abstract)

interface 定义了一个接口类,它里面的方法其子类必须实现.接口是类的一个模板,其子类必须实现接口中定义的所有方法. interface User{     function getHeight ...

C++虚函数virtual,纯虚函数pure virtual和Java抽象函数abstract,接口interface与抽象类abstract class的比较

由于C++和Java都是面向对象的编程语言,它们的多态性就分别靠虚函数和抽象函数来实现. C++的虚函数可以在子类中重写,调用是根据实际的对象来判别的,而不是通过指针类型(普通函数的调用是根据当前指针 ...

c++ 如何编写接口类(interface)

接口类简介: 接口是一系列抽象方法的声明,是一些方法特征的集合,这些方法都应该是抽象的,需要由具体的类去实现,然后第三方就可以通过这组抽象方法调用,让具体的类执行具体的方法. 用c++实现接口类时需要 ...

C# 接口(interface) 抽象类(abstract)

类代码: interface Employee { void ShowEmp(); } abstract class EmployeeInPostion: Employee { public abst ...

Python学习日记(二十五) 接口类、抽象类、多态

接口类 继承有两种用途:继承基类的方法,并且做出自己的改变或扩展(代码重用)和声明某个子类兼容于某基类,定义一个接口类interface,接口类中定义了一些接口名(就是函数名)且并未实现接口的功能,子 ...

php面向对象重的抽象类,接口类与静态

static 静态 <?php class ren { public $name; public static $sex; static function shao() { echo &quot ...

python之路----继承的抽象类和接口类

抽象类与接口类 接口类 继承有两种用途: 一:继承基类的方法,并且做出自己的改变或者扩展(代码重用) 二:声明某个子类兼容于某基类,定义一个接口类Interface,接口类中定义了一些接口名(就是函数 ...

随机推荐

segmentControl实现控制器的切换

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launc ...

国内 Composer 镜像收集

本文转载自: https://www.insp.top/article/composer-mirror-image 常见的: { "repositories": [ {" ...

easyrtc-server在ubuntu14&period;04上的安装方法

easyrtc 官网 http://easyrtc.com/ 1.安装nodejs,安装npm (不知道如何安装请google一下) 2. 查看运行easyrtc 所需要的js 包,在easyrtc ...

&lbrack;转&rsqb;-Android Studio 快捷键整理分享-SadieYu

文章编辑整理:Android Studio 中文组 - SadieYu Alt+回车 导入包,自动修正 Ctrl+N   查找类 Ctrl+Shift+N 查找文件 Ctrl+Alt+L  格式化代码 ...

ASP&period;NET数据控件

数据服务器控件就是能够显示数据的控件,与那些简单格式的列表控件不同,这些控件不但提供显示数据的丰富界面(可以显示多行多列数据并根据用户定义来显示),还提供了修改.删除和插入数据的接口. ASP.NET ...

sql like 时间需要做转换

EG: where Convert(varchar(100),[字段名],120) like '2010-10-10%'

ListView实现下拉刷新和上拉加载功能

1 public class RefreshListView extends ListView implements OnScrollListener { private View mHeaderVi ...

自动化运维—tomcat服务起停(mysql&plus;shell&plus;django&plus;bootstrap&plus;jquery)

项目简介: 项目介绍:自动化运维是未来的趋势,最近学了不少东西,正好通过这个小项目把这些学的东西串起来,练练手. 基础架构: 服务器端:web框架-Django 前端:html css jQuery ...

SuperMap-iServer过滤请求返回值

目的: iServer发布的arcgis地图服务中,由于tileinfo参数为null,导致用arcgis-ios客户端开发的APP闪退.通过过滤器将get请求的返回值修改 代码: package c ...

gawk命令详解

GNU awk: sort.cut.uniq.wc等参考: https://blog.csdn.net/lk07828/article/details/46324807 https://blog.cs ...

php 类 接口的区别吗,PHP的接口类(interface)和抽象类(abstract)的区别相关推荐

  1. C#中接口(Interface)与抽象类(abstract)的区别

    前言:在我学习接口(interface)与抽象类(abstract)时,我发现它们有一些相似之处也有一些不同,本博文来详细说说它们二者之间的区别: 文章目录: 一.不同之处: 1.声明上: 2.成员上 ...

  2. 接口Interface和抽象类abstract class的区别

    abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的面向对象能力. abstract class和inte ...

  3. 小论接口(interface)和抽象类(abstract class)的区别

    接口是类实现了某一种功能的体现,这种体现往往是对外的,所以重载接口的函数一定是public的 可是初学OO编程的时候,往往会碰到一个问题,既然有接口(interface)的存在,为什么还要有抽象类(a ...

  4. java接口和抽象类区别是什么_Java接口和抽象类有什么区别

    接口(interface)和抽象类(abstract class)是支持抽象类定义的两种机制. 接口是公开的,不能有私有的方法或变量,接口中的所有方法都没有方法体,通过关键字interface实现. ...

  5. java 抽象接口类,Java接口(interface)和Java抽象类(abstract class)的区别(详诉版)

    1.概述 一个软件设计的好坏,我想很大程度上取决于它的整体架构,而这个整体架构其实就是你对整个宏观商业业务的抽象框架, 当代表业务逻辑的高层抽象层结构合理时,你底层的具体实现需要考虑的就仅仅是一些算法 ...

  6. 接口(interface)和抽象(abstract)类的区别

    2019独角兽企业重金招聘Python工程师标准>>> 接口与抽象类的区别: 1 两者表达的概念不一样.抽象类是一类事物的高度聚合,与子类的关系属于"是"的关系: ...

  7. Java接口、基类、抽象类详解(图解接口、继承和实现、基类和抽象类的区别等)——Java基础系列

    文章目录 前言 总览(必看) 一.接口是"契约" 二.接口实例--Servlet接口 三.抽象标识符abstract和抽象类 四.基类作为"辅助" 求支持 前言 ...

  8. abstract类_012、Java的抽象方法、接口和String类

    1. 抽象方法和抽象类 ·抽象方法 使用abstract修饰的方法,没有方法体,只有声明.定义的是一种"规范",就是告诉子类必须要给抽象方法提供具体的实现. ·抽象类 包含抽象方法 ...

  9. (读书随笔)接口和抽象类的一些区别总结

    自己写的笔记 最近看"图灵"出版的一本<Java设计模式>的书,小感慨了一下,还是外国人写的好,对接口和抽象类进行一些总结 1.一个类可以实现多个接口,但是只能扩展一个 ...

最新文章

  1. 构建城市大脑的未来标准,9个值得探索的规范
  2. 【18】让接口容易被正确使用,不易被误用
  3. 移动短信回执怎么开通_才知道移动积分需要主动开通功能,才会消费产生积分,垃圾!!!...
  4. 10倍!微软开源深度学习优化库DeepSpeed,可训练1000亿参数模型
  5. 问题 J: 输出是m的倍数或n的倍数、但不是m和n的公倍数的数
  6. se linux ll-z,Linux selinux 基础
  7. elementui 嵌套表单验证_vue elementUI 表单嵌套验证的实例代码
  8. preHandle、postHandle与afterCompletion
  9. Javascript脚本之清除浏览器历史数据
  10. 数据挖掘概念与技术第三版第一章答案
  11. 图解机器学习chapter01
  12. 《老路用得上的商学课》26-30学习笔记
  13. 人工智能研究现状及发展前景如何
  14. Laravel 事件监听
  15. linux7台式机安装失败,台式机安装centos7提示“No Caching mode page found”
  16. 如何使用docker容器中的redis
  17. 你听过“易语言”吗?
  18. MYSQL数据库 增删改查基础语句
  19. android 照片点击查看,Android PhotoView点击放大图片效果
  20. jav中级面试题概览

热门文章

  1. pytorch JIT浅解析
  2. 通俗理解tf.name_scope()、tf.variable_scope()
  3. 汇编语言将数据、代码、栈放入不同段基础
  4. 【嵌入式】openmv与stm32的串口通信
  5. Android 标签 (FlexboxLayout实现标签)
  6. Fragment里面嵌套Fragment注意事项
  7. Web Service 安全性解决方案(SOAP篇)
  8. 复盘一次服务安装失败问题
  9. MySQL主主配置说明
  10. 机器学习实战 k-近邻算法 使用matplotlib创建散点图