本文目录一览:
1、接口和抽象类在面向对象编程中有什么作用和意义
2、php中抽象类的作用是什么?
3、php的抽象类和普通类的区别是什么
4、php抽象类,接口的区别和选择实例详解
5、php的抽象类和接口的区别
6、[php面向对象为什么要用接口、抽象类,他们又各自扮演什么角色?详细一点介绍下吧! 谢谢啦](#php面向对象为什么要用接口、抽象类,他们又各自扮演什么角色?详细一点介绍下吧! 谢谢啦)
接口和抽象类在面向对象编程中有什么作用和意义
接口类似模版,实现接口需实现接口内所有方法。 抽象类是类模版,类似接口,但一般(除C++)面向对象不支持多继承,所以出现了接口,php、java都有接口,C++没有。
php中抽象类的作用是什么?
相当于制定一个规范,比如一个商场,规定必须有一个支付的方法,那我们在父类中定义一个抽象支付方法,那么继承之后就必须实现。
php的抽象类和普通类的区别是什么
- 抽象类
- 概念解释:顾名思义,很抽象就是不具体,不能实例化成具体的实例,可以理解成类的模板。
- 应用场景:比如多国语言,定义一个抽象类,各国语言都继承这个抽象类来开发自己的语言。
- 作用:抽象类其实主要就是当做类的模板使用,做基础类,一般情况下你用不到。
- 接口
- 作用:接口主要是规范类,接口内的方法几个参数,类里面的方法也必须是几个参数,调用通过接口就可以知道,这个类的方法必须是几个参数。
php抽象类,接口的区别和选择实例详解
首先,看看什么是抽象类和接口:
抽象类:
定义为抽象的类不能被实例化。任何一个类,如果它里面至少有一个方法是被声明为抽象的,那么这个类就必须被声明为抽象的。被定义为抽象的方法只是声明了其调用方式(参数),不能定义其具体的功能实现。继承一个抽象类的时候,子类必须定义父类中的所有抽象方法;另外,这些方法的访问控制必须和父类中一样(或者更为宽松)。例如某个抽象方法被声明为受保护的,那么子类中实现的方法就应该声明为受保护的或者公有的,而不能定义为私有的。此外方法的调用方式必须匹配,即类型和所需参数数量必须一致。例如,子类定义了一个可选参数,而父类抽象方法的声明里没有,则两者的声明并无冲突。这也适用于 PHP 5.4 起的构造函数。在 PHP 5.4 之前的构造函数声明可以不一样的。
接口:
使用接口(interface),可以指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容。
接口是通过 interface
关键字来定义的,就像定义一个标准的类一样,但其中定义所有的方法都是空的。
接口中定义的所有方法都必须是公有,这是接口的特性。
要实现一个接口,使用 implements
操作符。类中必须实现接口中定义的所有方法,否则会报一个致命错误。类可以实现多个接口,用逗号来分隔多个接口的名称。
实现多个接口时,接口中的方法不能有重名。
接口也可以继承,通过使用 extends
操作符。
类要实现接口,必须使用和接口中所定义的方法完全一致的方式。否则会导致致命错误。
区别:
- 对接口的继承使用
implements
,抽象类使用extends
。 - 接口中不可以声明变量,但可以声明类常量。抽象类中可以声明各种变量。
- 接口没有构造函数,抽象类可以有。
- 接口中的方法默认为
public
,抽象类中的方法可以用public
、protected
、private
修饰。 - 一个类可以继承多个接口,但只能继承一个抽象类。
php的抽象类和接口的区别
- 接口中不可以声明成员变量(包括类静态变量),但是可以声明类常量。抽象类中可以声明各种类型成员变量,实现数据的封装。
- 接口没有构造函数,抽象类可以有构造函数。
- 接口中的方法默认都是
public
类型的,而抽象类中的方法可以使用private
、protected
、public
来修饰。 - 一个类可以同时实现多个接口,但一个类只能继承于一个抽象类。
php面向对象为什么要用接口、抽象类,他们又各自扮演什么角色?详细一点介绍下吧! 谢谢啦
没学过PHP我就把握关于面向对象的理解给你说说吧: 接口是定义了一个对象可以接受的消息,也就是定义了可以对一个对象进行的操作,外界通过这个接口获取对象的服务。一个对象 == 接口 + 实现。在这里接口就相当于界面的角色,外界可以依赖这个界面。封装就是确定一个对象的接口和实现,将接口呈现出来,隐藏实现的过程。 抽象类是一种特殊的类,它的成员函数(或者方法)可不提供定义而且不能定义它的对象。通常抽象类里都定义了一组接口,这组接口没有提供实现,而由抽象类派生的非抽象子类则提供了这个接口的实现。从上面可以看出抽象类相当于一个接口,因为它提供了一组接口,而非抽象派生类相当于实现,这里就产生了一种较高层次的封装。抽象类提供了一个接口,而这个抽象类的不同派生类提供了不同的实现,从而是实现和接口分离,实现了更高层次的封装。 一些好的面向对象程序的代码都尽可能使用抽象类,就是居于上面的原因。