首页 > 编程知识 正文

php面向对象之抽象类,php 抽象类和抽象接口的区别

时间:2023-12-27 22:27:02 阅读:325343 作者:OJSR

本文目录一览:

接口和抽象类在面向对象编程中有什么作用和意义

接口类似模版 实现接口需实现接口内所有方法

抽象类是类模版 类似接口 但一般(除C++)面向对象不支持多继承 所以出现了接口 php java都有接口 C++没有

php中抽象类的作用是什么?

相当于制定一个规范,比如一个商场,规定必须有一个支付的方法,那我们在父类中定义一个抽象支付方法,那么继承之后就必须实现

php的抽象类和普通类的区别是什么

1.抽象类

概念解释:顾名思义,很抽象就是不具体,不能实例化成具体的实例,可以理解成类的模板

应用场景:比如多国语言,定义一个抽象类,各国语言都继承这个抽象类来开发自己的语言,

作用:抽象类其实主要就是当做类的模板使用 做基础类 一般情况下你用不到

2.接口

作用:接口主要是规范类,接口内的方法几个参数,类里面的方法也必须是几个参数,调用通过接口就可以知道,这个类的方法必须是几个参数

php抽象类,接口的区别和选择实例详解

首先,看看什么是抽象类和接口

抽象类:

定义为抽象的类不能被实例化.任何一个类,如果它里面至少有一个方法是被声明为抽象的,那么这个类就必须被声明为抽象的。被定义为抽象的方法只是声明了其调用方式(参数),不能定义其具体的功能实现。继承一个抽象类的时候,子类必须定义父类中的所有抽象方法;另外,这些方法的访问控制必须和父类中一样(或者更为宽松)。例如某个抽象方法被声明为受保护的,那么子类中实现的方法就应该声明为受保护的或者公有的,而不能定义为私有的。此外方法的调用方式必须匹配,即类型和所需参数数量必须一致。例如,子类定义了一个可选参数,而父类抽象方法的声明里没有,则两者的声明并无冲突。 这也适用于 PHP 5.4 起的构造函数。在 PHP 5.4 之前的构造函数声明可以不一样的.

接口:

使用接口(interface),可以指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容。

接口是通过 interface 关键字来定义的,就像定义一个标准的类一样,但其中定义所有的方法都是空的。

接口中定义的所有方法都必须是公有,这是接口的特性。

要实现一个接口,使用 implements 操作符。类中必须实现接口中定义的所有方法,否则会报一个致命错误。类可以实现多个接口,用逗号来分隔多个接口的名称。

实现多个接口时,接口中的方法不能有重名。

接口也可以继承,通过使用extends操作符.

类要实现接口,必须使用和接口中所定义的方法完全一致的方式。否则会导致致命错误.

区别:

1.对接口的继承使用implements,抽象类使用extends.

2.接口中不可以声明变量,但可以声明类常量.抽象类中可以声明各种变量

3.接口没有构造函数,抽象类可以有

4.接口中的方法默认为public,抽象类中的方法可以用public,protected,private修饰

5.一个类可以继承多个接口,但只能继承一个抽象类

php的抽象类和接口的区别

接口中不可以声明成员变量(包括类静态变量),但是可以声明类常量。抽象类中可以声明各种类型成员变量,实现数据的封装。

接口没有构造函数,抽象类可以有构造函数。

接口中的方法默认都是public类型的,而抽象类中的方法可以使用private,protected,public来修饰。

一个类可以同时实现多个接口,但一个类只能继承于一个抽象类。

php面向对象为什么要用接口、抽象类,他们又各自扮演什么角色?详细一点介绍下吧! 谢谢啦

没学过PHP我就把握关于面向对象的理解给你说说吧:

接口是定义了一个对象可以接受的消息,也就是定义了可以对一个对象进行的操作,外界通过这个接口获取对象的服务。一个对象 == 接 口 + 实现。 在这里接口就相当于界面的角色,外界可以依赖这个界面。 封装就是确定一个对象的接口和实现,将接口呈现出来,隐藏实现的过程。

抽象类是一种特殊的类,它的成员函数(或者方法)可不提供定义而且不能定义它的对像。通常抽象类里都定义了一组接口,这组接口没有提供实现,而由抽象类派生的非抽象子类则提供了这个接口的实现。 从上面可以看出抽象类相当于一个接口,因为它提供了一组接口,而非抽象派生类相当于实现,这里就产生了一种较高层次的封装。 抽象类提供了一个接口,而这个抽象类的不同派生类提供了不同的实现,从而是实现和接口分离,实现了更高层次的封装。

一些好的面向对象程序的代码都尽可能使用抽象类,就是居于上面的原因。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。