php 接口 & 抽象类

概述


抽象类是一种特殊的类,而接口是一种特殊的抽象类

抽象方法


抽象类是一种特殊的类

定义:一个方法如果没有方法体,则这个方法就是抽象方法。(没有方法体的方法叫抽象方法)

1、 一个方法没有方法体(也没有花括号),直接用分号结束的方法; 2、 如果是抽象方法,必须使用abstract抽象关键字形容

注意:

  • 1、只要有abstract修饰的类就是抽象类

  • 2、除了在抽象类中可以有抽象方法之外,和正常的类完全一样

  • 3、抽象类不能实例化对象

  • 4、如果抽象类有子类,如果子类要想能被实例化,则子类必须重写(实现)父类中全部的抽象方法,否则这个子类不能被实例化,如果只是实现部分,那么这个子类还是抽象类

实现父类中的方法,什么叫“实现”,就是具体实现,要包含有方法体

抽象方法的作用:就是规定子类必须有这个方法,且将功能交给子类来处理,只写出来方法的结构,而没有实现(无方法体),具体的功能实现交给具体的子类根据自己的需求实现

抽象类


抽象类:有一个抽象方法的类,就是抽象类

抽象类的作用:就是严格要求子类的结构,所以抽象类其实就是一个规范。

定义形式:

好好耕耘
PHP面向对象之接口
接口(interface)技术
什么是接口?
先看抽象类:

abstract  class  类名  {

属性1;

属性2;

.....

非抽象方法1;

非抽象方法2;

......

抽象方法1;

抽象方法2;

......

}  

接口


接口是一种特殊的抽象类

接口就是“比抽象类更抽象的”一种语法结构。

定义

接口(interface)定义形式:

interface  接口名{

常量1;

常量2;

.....

抽象方法1;

抽象方法2;

.....

}

可见:接口几乎自己什么都没做,就光让别人做什么。

说明:

1,可见,接口中,只有常量(接口常量)和抽象方法两种成员;

2,接口常量的使用形式为: 接口名称::常量名称;

3,接口中的抽象方法,不要使用abstract修饰,也不需要使用访问控制修饰符,因为其天然就是public

为什么需要接口?

面向对象编程思想是对“现实世界”的描述(模拟)!

现实世界往往都都是多继承的;

但:

出于降低类跟类之间关系的复杂度的考虑,就将语言设计为单继承的;

但这样,就无法表达出现实世界的多继承特性;

则:

接口就是对没有多继承的类之间关系的一个补充;

 

因为:接口可以实现“多继承”——但此时不称为继承而已,而是称为“实现”;

即:

接口1  -->> 类1;

就称为:类1实现了接口1;

其本质,其实就是类1中,有了接口1中“特征信息”;

使用形式:

形式为:

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

//类的定义。

}

这里,叫做,类实现了接口。

implements,译为:实现。其本质其实和 extends 一样,就是继承;

其中,接口跟接口之间,也可以继承,跟类之间的继承:

interface  接口1  extends  接口2{

//接口的成员定义;。。。。

}

比较


1、 接口中的方法,必须全部是抽象方法,所以接口中的抽象方法不需要使用abstract关键字,直接用分号结束即可

2、 接口中的成员属性,必须是常量(不能有变量)

3、 所有的方法必须全部是public

4、 声明接口不适用class,而是使用interface

Tips:

1、可以使用extends让一个接口继承另一个接口,即常用的继承(扩展新抽象方法),无覆盖的关系

2、可以使用一个类来实现接口中全部方法,也可以使用一个抽象类,来实现接口中的部分方法

3、不要使用extends这个关键字,使用implements实现implements相当于extends

4、一个类可以在继承另一个类的同时,使用implements实现一个接口,也可以实现多个接口(一定要先继承,再实现接口)

类和接口的大总结


PHP中是“单一继承(类),多实现(接口)”

转载于:https://my.oschina.net/u/3683692/blog/3038783

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值