本信息所属专题
更多
关联文章
热门标签
更多
您所在位置:首页  ›  影视百态  ›  娱乐搞笑

抽象类和接口的区别

青梅娱乐编辑于 2023-05-23 18:20:00

许多朋友搞不懂Java中抽象类和借口的区别,今天我们就来分析一下。

接口,在表面上是由几个没有主体代码的方法定义组成的集合体,有唯一的名称,可以被类或其他接口所实现(或者也可以说继承)。

接口是一组规则的集合,它规定了实现本接口的类或接口必须拥有的一组规则。体现了自然界“如果你是……则必须能……”的理念。接口是在一定粒度视图上同类事物的抽象表示。注意这里我强调了在一定粒度视图上,因为“同类事物”这个概念是相对的,它因为粒度视图不同而不同。

关于抽象类与接口,如果单从具体代码来看,对这两个概念很容易模糊,甚至觉得接口就是多余的,因为单从具体功能来看,除多重继承外(C#,Java中),抽象类似乎完全能取代接口。但是,难道接口的存在是为了实现多重继承?当然不是。抽象类和接口的区别在于使用动机。使用抽象类是为了代码的复用,而使用接口的动机是为了实现多态性。所以,如果你在为某个地方该使用接口还是抽象类而犹豫不决时,那么可以想想你的动机是什么。

总而言之,接口与抽象类的区别主要在于使用的动机,而不在于其本身。而一个东西该定义成抽象类还是接口,要根据具体环境的上下文决定。再者,接口和抽象类的另一个区别在于,抽象类和它的子类之间应该是一般和特殊的关系,而接口仅仅是它的子类应该实现的一组规则。(当然,有时也可能存在一般与特殊的关系,但我们使用接口的目的不在这里)如,交通工具定义成抽象类,汽车、飞机、轮船定义成子类,是可以接受的,因为汽车、飞机、轮船都是一种特殊的交通工具。再譬如Icomparable接口,它只是说,实现这个接口的类必须要可以进行比较,这是一条规则。如果Car这个类实现了Icomparable,只是说,我们的Car中有一个方法可以对两个Car的实例进行比较,可能是比哪辆车更贵,也可能比哪辆车更大,这都无所谓,但我们不能说“汽车是一种特殊的可以比较”,这在文法上都不通。

Android中ListView作为开发最常用的组件之一,我们经常要使用自定义的Adapter来达到我们的目的,因此写一个自己的BaseAdapter是很常见的事情,而重写BaseAdapter的目的就是为了少写重复代码和实现自己想要的getview()函数,这里我们看看这个抽象类:

我们再来看看接口,接口的目的是为了让实现接口的对象一不同方式实现同一方法,而不是为了减少重复代码,这里举一个Cache的代码,这一接口是制定了缓存对象的规则,即实现缓存的对象必须要实现接口里定义的方法,这样才能保证缓存功能的完整:

本站提供的图片、视频和资源内容均来自于网络。所有图片和视频版权归原作者属有,如果本站无意中侵犯了您的权利,请与我们联系[email protected]
娱乐搞笑其他文章
更多
多肉白牡丹怎么养
多肉白牡丹怎么养  白牡丹白牡丹有叫“白丽”的,为景天科风车草属的“胧月”与拟石莲花属的“静夜”的杂交品种,多年生肉质草本。植株生长较快,易生出分枝,形成群生株。叶子,倒...
1个月前
摆摊买气球 气球飞了
摆摊买气球气球飞了,真是快乐的一天
1个月前
关于昙花的传说
昙花的传说  昙花原是一位花神,她每天都开花,四季都灿烂。她还爱上了每天给她浇水除草的年轻人。后来此事给玉帝得知,玉帝于是大发雷霆要拆散鸳鸯。玉帝将花神抓了起来,把她贬...
1个月前
电动车带三个精神小妹
电动车带三个精神小妹,精神小妹都挺瘦的
1个月前
蔷薇花的养殖方法
蔷薇花养殖方法  1、土壤:蔷薇花对土壤的要求并不严格,耐干旱,耐瘠薄,栽培以在土层深厚、疏松、肥沃湿润且排水通畅的土壤中生长最为适宜,也可在粘重土壤上正常生长。无论是地...
1个月前
棒叶不死鸟怎么养
棒叶不死鸟为景天科伽蓝菜属多肉植物,别名落地生根,又叫不死鸟。下面醉花网结合花友的种植经验为大家介绍一下棒叶不死鸟的养护要点.棒叶不死鸟的茎直立,圆柱状,光滑无毛,中空。...
1个月前
查看更多娱乐搞笑栏目文章
精彩视频
查看更多精彩养眼视频
更多热图推荐
查看男人的福利
青梅娱乐版权所有,邮箱:[email protected]
苏ICP备19037501号-2