PHP接口(interface ) 和 抽象类(abstract)的定义概念以及使用场景

接口是什么 可以做什么 为什么需要接口?

PHP是与大多数面向对象的编程语言一样,不支持多重继承,也就是说每个类只能继承一个父类。实际开发中会有多重复用的场景,PHP为了解决这个问题,引入了接口,规定实现该接口的类必须实现该类中的所有方法。

就像你看上了一个离婚的带孩子(一个或多个)的女人,她说想和我结婚可以,但是条件呢就是必须抚养我的孩子。至于怎么抚养那就是你的事了,呵护有加可以,暴打虐待也可以。。。

简单讲就是 接口就是类的模板,一个类的规定,继承了该类必须实现该类中所有的方法,具体实现方法不管,那是你的事了。接口就是大领导,指明方向,子类必须完成它规定的方法。

 

接口定义和使用规范:

定义:接口是抽象方法和静态常量的集合。接口是一种特殊的抽象类,这种抽象类中只包含抽象方法和静态常量。

接口中的抽象方法只能是public的,默认public权限。Abstract和final修饰符不能修饰接口中的抽象方法。

interface + 接口名 { ... }

interface User

{

    //public $name;//报错,只能包含抽象方法和静态常量。
    const GROUP = 12;//静态常量

    //public function t(){};//报错,只能包含抽象方法和静态常量。
    //private function t(){};//报错,接口中的抽象方法只能是public的,默认也是public权限。
    //abstract function t(){};//报错,abstract和final修饰符也不能修饰接口中的抽象方法。

    //仅下面两种定义方法可以
    public function right1();
    function right2();

}

 

接口的应用场景:

当多个对象不能抽象出共同的父类,但是有共同的行为,这种情况下就需要将这种行为封装成接口。比如登记这种行为:人,汽车,房子都需要登记,但是这三类没有共同的特征,所以要将登记这一行为封装成一个接口。再如:电脑的USB接口使用,如果符合USB接口规范,就可以插进去,并且读取或写入数据,但是 手机,U盘,MP3他们不是同一种类型,所以要将USB接口单独封装出来。

 

知识延申:

什么是抽象接口? 抽象类?

定义为抽象的类不能被实例化。任何一个类,如果它里面至少有一个方法是被声明为抽象的,那么这个类就必须被声明为抽象的。被定义为抽象的方法只是声明了其调用方式,不能定义其具体的功能实现。

继承一个抽象类的时候,子类必须定义为父类中的所有的抽象方法;

另外这些方法的访问控制必须和父类中一样。

关键字:abstract class + 类名{ ... }

 

类和接口的关系是什么 ?

是一种类似于类的结构

 

接口和抽象类的关系?

通常,在子类和父类之间存在逻辑上的层次结构是应当使用抽象类,而在希望支持差别较大的两个或多个对象之间的特定交互行为时,就应当使用接口。

 

接口如何使用 ?

抽象类和接口的区别?

接口是一种特殊的抽象类

区别

关键字(定义)

关键字(使用)

数据成员

构造函数

修饰符

类实现

抽象类

abstract

extends

Private,protected,public

一个

接口

Interface

implements

没有

没有

只能是public

多个

 

相同点:抽象方法与接口的函数不能写任何东西,两个大括号也不能写,

Function + funname($val);  就可以了 ,没有参数则为空

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
抽象类和接口都是Java中的抽象概念,它们的主要区别在于实现方式和使用场景。 一、抽象抽象类是一种不能被实例化的类,它的定义使用abstract关键字。抽象类可以包含抽象方法和非抽象方法。 抽象方法是一种没有实现的方法,它的定义使用abstract关键字。子类必须实现抽象方法才能被实例化。 非抽象方法是一种有实现的方法,它的定义没有使用abstract关键字。子类可以重写非抽象方法,也可以直接继承使用使用场景: 1.抽象类用于定义一些公共的属性和方法,被继承的子类可以实现和重写这些方法和属性,增强代码重用性和维护性。 2.抽象类可以作为一种规范、约束或标准来使用,让不同的子类去实现不同的行为或功能,提高代码的灵活性。 二、接口 接口是一种不能被实例化的纯抽象类,它的定义使用interface关键字。接口定义了一系列的方法和常量,但没有实现。 接口中的所有方法都是抽象方法,定义使用abstract关键字。 使用场景: 1.接口用于定义一些规范或标准,被实现的子类需要实现规定的行为或功能,提高灵活性和可维护性。 2.接口可以用于实现多重继承,一个接口可以被多个类实现,使得一个类具有更多的功能和行为。 总结: 抽象类和接口都是Java中的抽象概念,它们的主要区别在于实现方式和使用场景。 1.抽象类是一种不能被实例化的类,它的定义使用abstract关键字。抽象类可以包含抽象方法和非抽象方法。 2.接口是一种不能被实例化的纯抽象类,它的定义使用interface关键字。接口定义了一系列的方法和常量,但没有实现。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值