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 用接口和抽象类的情况 接口是一种协定,抽象类则相当于类模板。 使用抽象类,而不要使用接口来分离协定与实现。 如果需要提供多态层次结构的值类型,使用接口。 如果一个类型必须实现多个协定,或者协定适用于多种类型,使用接口。 虽然抽象类和接口都支持将协定与实现分离开来,但接口不...