PHP接口和抽象类的区别,php抽象类和接口的区别

2020-11-22 18:12:10 字数 4980 阅读 9018

1楼:匿名用户

【抽象类

】抽象类是用来捕捉子类的通用特性的 。它不能被实例化,只能被用作子类的超类。抽象类是被用来创建继承层级里子类的模板。

【接口】

接口是抽象方法的集合。如果一个类实现了某个接口,那么它就继承了这个接口的抽象方法。这就像契约模式,如果实现了这个接口,那么就必须确保使用这些方法。

接口只是一种形式,接口自身不能做任何事情。

【什么时候使用抽象类和接口】

如果你拥有一些方法并且想让它们中的一些有默认实现,那么使用抽象类吧。

如果你想实现多重继承,那么你必须使用接口。

如果基本功能在不断改变,那么就需要使用抽象类。如果不断改变基本功能并且使用接口,那么就需要改变所有实现了该接口的类。

php抽象类和接口的区别

2楼:一骑当后

区别:1、对接口的使用是通过关键字implements。对抽象类的使用是通过关键字extends。当然接口也可以通过关键字extends继承。

2、接口中不可以声明成员变量(包括类静态变量),但是可以声明类常量。抽象类中可以声明各种类型成员变量,实现数据的封装。(另java接口中的成员变量都要声明为public static final类型)

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

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

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

抽象类还是接口。

如果要创建一个模型,这个模型将由一些紧密相关的对象采用,就可以使用抽象类。如果要创建将由一些不相关对象采用的功能,就使用接口。

如果必须从多个**继承行为,就使用接口。

如果知道所有类都会共享一个公共的行为实现,就使用抽象类,并在其中实现该行为。

php的抽象类和接口的区别

3楼:流星飞满天

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

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

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

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

php 抽象类和接口的区别

4楼:只为你守候

对接口的使用方式是通过关键字implements来实现的,而

php的抽象类,接口类的区别和选择

5楼:娴舞小魔灵

一、抽象类里面的方法可以有实现,但是接口里面的方法确是只能声明。

二、接口是设计的结果

抽象类是重构的结果

三、java不支持多重继承,所以继承抽象类只能继承一个,但是可以实现多个接口。

1 接口是核心,其定义了要做的事情,包含了许多的方法,但没有定义这些方法应该如何做。

2 如果许多类实现了某个接口,那么每个都要用**实现那些方法3 如果某一些类的实现有共通之处,则可以抽象出来一个抽象类!

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

6楼:匿名用户

1.抽象类

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

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

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

2.接口

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

7楼:匿名用户

为了规范写法,新人必须调用抽象类再重载

java中抽象类和接口的区别?

8楼:靠名真tm难起

抽象类是用来捕捉子类的通用特性的 。它不能被实例化,只能被用作子类的超类。抽象类是被用来创建继承层级里子类的模板。

接口是抽象方法的集合。如果一个类实现了某个接口,那么它就继承了这个接口的抽象方法。这就像契约模式,如果实现了这个接口,那么就必须确保使用这些方法。

接口只是一种形式,接口自身不能做任何事情。

9楼:匿名用户

简单来说,

接口是公开的,里面不能有私有的方法或变量,是用于让别人使用的,而抽象类是可以有私有方法或私有变量的,

另外,实现接口的一定要实现接口里定义的所有方法,而实现抽象类可以有选择地重写需要用到的方法,一般的应用里,最顶级的是接口,然后是抽象类实现接口,最后才到具体类实现。

还有,接口可以实现多重继承,而一个类只能继承一个超类,但可以通过继承多个接口实现多重继承,接口还有标识(里面没有任何方法,如remote接口)和数据共享(里面的变量全是常量)的作用.

10楼:仲维传媒

“抽象类”和“接口”的区别如下:

1) 在抽象类中可以写非抽象的方法,从而避免在子类中重复书写他们,这样可以提高**的复用性,这是抽象类的优势;接口中只能有抽象的方法。

2) 一个类只能继承一个直接父类,这个父类可以是具体的类也可是抽象类;但是一个类可以实现多个接口。

图中如果sparrow继承类bird 类 ,boyin继承airplane类,sparrow 和boyin想使用同样的flay方法那么是没有办法实现的,因为类的继承是单继承。

如果bird和airplane是接口那么boyin想使用同样的flay方法就很简单了。在写一个接口让sparrow和boyin实现这个接口就可以了如下图:

11楼:匿名用户

抽象方法是必须实现的方法。就象动物都要呼吸。但是鱼用鳃呼吸,猪用肺呼吸。

动物类要有呼吸方法。怎么呼吸就是子类的事了。

现在有很多讨论和建议提倡用inte***ce代替abstract类,两者从理论上可以做一般性的混用,但是在实际应用中,他们还是有一定区别的。抽象类一般作为公共的父类为子类的扩展提供基础,这里的扩展包括了属性上和行为上的。而接口一般来说不考虑属性,只考虑方法,使得子类可以自由的填补或者扩展接口所定义的方法,就像java王子所说的事件中的适配器就是一个很好的应用。

用一个简单的例子,比如说一个教师,我们把它作为一个抽象类,有自己的属性,比如说年龄,教育程度,教师编号等等,而教师也是分很多种类的,我们就可以继承教师类而扩展特有的种类属性,而普遍属性已经直接继承了下来。

而接口呢~还是拿教师做例子,教师的行为很多,除了和普通人相同的以外,还有职业相关的行为,比如改考卷,讲课等等,我们把这些行为定义成无body的方法,作为一个集合,它是一个inte***ce。而教师张三李四的各自行为特点又有不同,那么他们就可以扩展自己的行为body。从这点意义上来说, inte***ce偏重于行为。

总之,在许多情况下,接口确实可以代替抽象类,如果你不需要刻意表达属性上的继承的话。

12楼:手机用户

因为java是单根继承的,所以能用接口尽量用接口,c++的接口就是通过抽象类实现的

php的抽象类,接口的区别和选择

13楼:好程序员

区别:

1、对接口的使用是通过关键字implements。对抽象类的使用是通过关键字extends。当然接口也可以通过关键字extends继承。

2、接口中不可以声明成员变量(包括类静态变量),但是可以声明类常量。抽象类中可以声明各种类型成员变量,实现数据的封装。(另java接口中的成员变量都要声明为public static final类型)

abstractclassfather

abstractfunctionmeth2();

public$var1="var1";

publicstatic$var2="var2";

constvar3="var3";

}classsonextendsfather

}$s=newson();

echo$s->var1."

";echofather::$var2."

";echofather::var3."

";inte***ceifather

classisonimplementsifather

}$is=newison();

echoifather::ivar3;

?>

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

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

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

抽象类还是接口:

如果要创建一个模型,这个模型将由一些紧密相关的对象采用,就可以使用抽象类。如果要创建将由一些不相关对象采用的功能,就使用接口。

如果必须从多个**继承行为,就使用接口。

如果知道所有类都会共享一个公共的行为实现,就使用抽象类,并在其中实现该行为。

php 什么情况用接口和抽象类

14楼:育知同创教育

php 用接口和抽象类的情况:

接口是一种协定,抽象类则相当于类模板。

使用抽象类,而不要使用接口来分离协定与实现。

如果需要提供多态层次结构的值类型,使用接口。

如果一个类型必须实现多个协定,或者协定适用于多种类型,使用接口。

虽然抽象类和接口都支持将协定与实现分离开来,但接口不能指定以后版本中的新成员,而抽象类可以根据需要添加成员以支持更多功能。

优先考虑定义类,而不是接口。

后面的问题你看明白了上面这些就有答案了,如果可以互相取代何必搞两个概念出来呢

php什么情况用接口和抽象类,java中为什么要用抽象类和接口

1楼 育知同创教育 php 用接口和抽象类的情况 接口是一种协定,抽象类则相当于类模板。 使用抽象类,而不要使用接口来分离协定与实现。 如果需要提供多态层次结构的值类型,使用接口。 如果一个类型必须实现多个协定,或者协定适用于多种类型,使用接口。 虽然抽象类和接口都支持将协定与实现分离开来,但接口不...