抽象类继承和接口的区别别是什么

抽象类和接口的区别_文档库
文档库最新最全的文档下载
当前位置: & 抽象类和接口的区别
抽象类和接口的区别
1、abstract class 和 interface有什么异同?答:1).抽象类可以有实现(包括构造函数),而接口不可以有任何实现,重要的是抽象类可以包括抽象方法,这是普通类所不能的。抽象方法只能声明于抽象类中,且不包含任何实现,派生类必须覆盖它们。接口中所有方法都必须是未实现的。2).抽象类中还以有成员变量(包含静态成员变量)、属性、常量和静态方法,并且他们可以是非公共的;而接口中不能有成员变量、常量、静态方法,只能有公共的属性。3).抽象类可以从另一个类或者一个/ 多个接口派生;而接口不能从另一个类派生却可以实现另一个或多个接口。4).一个.net 类只能从一个基类中派生即使这个基类是抽象类;然而一个.net 类可以实现多个接口。(但是如果从一个抽象类派生或者从一个/ 多个接口实现,则必须实现抽象类中抽象方法或接口中所有的方法)相同点:1)、不能实例化;2)、包含未实现的方法声明;3)、派生类必须实现未实现的方法,抽象类是抽象方法,接口则是所有成员(不仅是方法包括其他成员);抽象类和接口的使用:1)如果预计要创建组件的多个版本,则创建抽象类。抽象类提供简单的方法来控制组件版本。2)如果创建的功能将在大范围的全异对象间使用,则使用接口。如果要设计小而简练的功能块,则使用接口。3)如果要设计大的功能单元,则使用抽象类.如果要在组件的所有实现间提供通用的已实现功能,则使用抽象类。
4)抽象类主要用于关系密切的对象;而接口适合为不相关的类提供通用功能。2.虚方法和抽象方法的区别抽象方法
1)使用abstract关键字
例如: public
Withdraw(…);
2)抽象方法只能在抽象类中声明, 抽象方法必须在派生类中重写
3)抽象方法是可以看成是没有实现体的虚方法
如果类中包含抽象方法,那么类就必须定义为抽象类,不论是否还包含其它一般方法。虚方法1)使用virtual关键字
例如: public
Withdraw(…);
2)调用虚方法,运行时将确定调用对象是什么类的实例,并调用适当的覆写的方法。
3)虚方法必须有实现部分,子类可以覆盖也可以不覆盖,根据取决于要求。
Word文档免费下载:
C_.NET里面抽象类和接口有什么区别_计算机软件及应用_IT/计算机_专业资料。绝对经典。只需要1个下载卷,你不会失望 1 抽象类 (1) 抽象方法只作声明,而不包含...Java抽象类和接口的区别(详细解析)_计算机软件及应用_IT/计算机_专业资料。详细解析 Java 抽象类和接口的区别在 Java 语言中, abstract class 和 interface 是支持...JAVA接口和抽象类的区别是什么? _ java面试题_面试_求职/职场_实用文档。 文档贡献者 真燕无畏 贡献于 1/2 相关文档推荐 ...谈抽象类与接口的区别之一 一,抽象类: 抽象类是特殊的类,只是不能被实例化;除此以外,具有类的其他特性;重要的是抽象类可以包括抽象方法,这是普通 类所不能...Java中的类、抽象类和接口的区别和联系_IT/计算机_专业资料。java中的类、抽象类、接口的定义、区别、联系、举例 Java 中类、抽象类、接口之间的区别和联系。 ...抽象类和接口的相同点跟区别_IT/计算机_专业资料。相同点: (1) 都可以被继承 (2) 都不能被实例化 (3) 都可以包含方法声明 (4) 派生类必须实现未实现的方...1.抽象类和接口有什么异同?10分答:接口用于规范,抽象类用于共性。接口中只能声明方法,属性,事件,索引器。而抽象类中可以有方法的实现,也可以定义非静态的类变量...抽象类和接口联系与区别 关键字: 抽象类与接口的区别 abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了...抽象类和接口区别用法_IT/计算机_专业资料。Java学习的一些用法总结引言 一个软件设计的好坏在很大程度上取决于它的设计模式, 而任何一个 设计模式都是和抽象分不...接口和抽象类有什么区别_计算机软件及应用_IT/计算机_专业资料。接口和抽象类的概念不一样。接口是对动作的抽象,抽象类是对根源的抽象。 抽象类表示的是,这个对象...君,已阅读到文档的结尾了呢~~
抽象类与接口的区别
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
抽象类与接口的区别
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer--144.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
在上面的示例中,用一个已实现的方法和三个未实现的方法声明抽象类。从该类继承的类必须实现 Wash、Rinse 和 Spin 方法。下例显示了该类实现的可能形式: // C#class MyWashingMachine : WashingMachine{
public MyWashingMachine()
// Initialization code goes here.
override public void Wash()
// Wash code goes here.
override public void Rinse(int loadSize)
// Rinse code goes here.
override public long Spin(int speed)
// Spin code goes here.
}} 在实现抽象类时,必须实现该类中的每一个抽象 (MustOverride) 方法,而每个已实现的方法必须和抽象类中指定的方法一样,接收相同数目和类型的参数,具有同样的返回值。&&&&& 抽象类和接口的使用: &&&&& 1.&如果预计要创建组件的多个版本,则创建抽象类。抽象类提供简单的方法来控制组件版本。 &&&&& 2.如果创建的功能将在大范围的全异对象间使用,则使用接口。如果要设计小而简练的功能块,则使用接口。 &&&&&&3.如果要设计大的功能单元,则使用抽象类.如果要在组件的所有实现间提供通用的已实现功能,则使用抽象类。&&& &&&&& 4.抽象类主要用于关系密切的对象;而接口适合为不相关的类提供通用功能。
阅读(1586)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_087075',
blogTitle:'接口(interface)和抽象类(abstract)的区别',
blogAbstract:'抽象类与接口紧密相关,它们不能示例化,并且常常部分实现或根本不实现。抽象类和接口之间的一个主要差别是:类可以实现无限个接口,但仅能从一个抽 象(或任何其他类型)类继承。从抽象类派生的类仍可实现接口。可以在创建组件时使用抽象类,因为它们使您得以在某些方法中指定不变级功能,但直到需要该类 的特定实现之后才实现其他方法。抽象类也制定版本,因为如果在派生类中需要附加功能,则可以将其添加到基类而不中断代码。 在 Visual Basic 中,抽象类用 MustInherit 关键字表示。在 C# 中,则使用 abstract 修饰符。任何所谓不变的方法都可以编码至基类中,但在 Visual Basic 中,任何要实现的方法都用 MustOverride 修饰符标记。在 C# 中,这些方法标记为 abstract。下例显示了一个抽象类:',
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:6,
publishTime:3,
permalink:'blog/static/',
commentCount:0,
mainCommentCount:0,
recommendCount:1,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'',
hmcon:'1',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}用户名:peiquan
文章数:54
评论数:25
访问量:193879
注册日期:
阅读量:1297
阅读量:3317
阅读量:452777
阅读量:1137228
51CTO推荐博文
在重温java基础的是时候,今天复习学习了接口与抽象类的区别,稍微整理了一下。问题描述: & &在java语言中,接口和抽象类都不能被实例化,都位于继承树的顶端,用于被其他类实现和继承。接口和抽象类都可以包含抽象方法,实现接口或继承抽象类的普通子类都必须实现这些抽象方法。 & &在一定程度上,接口和抽象类很相似,在实现某些功能时,两者可以相互替换,所以有些程序员对接口和抽象类的选择比较随意。但是,实际上两者之间的设计理念有很大的不同,抽象类用于继承,表示is-a的关系,而接口用于实现,表示like-a关系,对于它们的选择甚至反映出对于问题领域本质的理解、对于设计意图的理解是否正确、合理。那对于接口和抽象类该如何选择???一、从语义的角度选择 & &接口与抽象类在语义上区别主要在定义和使用格式上,下面来看抽象类和接口的定义和使用格式:1.抽象类的定义和使用格式在java定义抽象类时,要在关键字class前面加上关键字abstract。其具体格式如下: & &abstract class 类名{ & & & &类体 & &}抽象类通过继承的方式使用,一个子类只能继承一个抽象类(父类),在子类中必须实现抽象类中所有的抽象方法。具体的实现方式如下: & &class 类名 extends 抽象类 { & & & & & //实现全部抽象方法 & &}2.接口的定义和使用格式在java中,可以使用关键字interface定义一个接口,一个接口由变量的定义和方法定义两部分组成。定义接口的基本语法格式如下: & &interface 接口名 { & & & & & [public] [static] [final] 变量; & & & & & [public] [abstract] 方法; & &}接口通过实现的方式使用,一个类可以实现多个接口,在实现类中,需要将接口中所有的方法均实现。其具体格式如下: & &class 类名 implement 接口列表 { & & & & & //实现所有接口中声明的方法 & &} & &在了解接口和抽象类的定义和使用格式后,再来看如何选择接口或者抽象:(1)抽象类可以提供成员的实现细节,而接口不能。设计抽象时,如果要求提供成员的实现细节,可选择抽象类。(2)如果设计抽象时选择抽象类,在以后的版本中可以随意为抽象类添加新成员。而接口在这方面就没有那么灵活,只有修改代码才能添加成员。(3)一个类可以实现多个接口,但只能继承一个抽象类,如果要实现类似于多重继承的效果,可选择接口。二、从设计理念选择 & &接口与抽象类在使用方式有着一定的重合,可他们二者在设计的目的上有着巨大的差别。下面具体分析二者的差别。 & &接口作为系统和外界交互的窗口,接口体现的是一种规范。对于接口的实现者而言,接口规定了实现者必须向外提供哪些服务(以方法的形式来提供);对于接口的调用者而言,接口规定了调用者可以调用哪些服务,以及如何调用这些服务(就是如何来调用方法)。从某种角度上来看,接口类似于整个系统的“总纲”,它制定了系统各模块之间应该遵循的标准,因此一个系统中的接口不应该经常改变。一旦接口改变,对整个系统而言甚至其他系统的影响将是辐射式的,导致系统中的大部分类都需要重写。所以,在一般的应用里,最顶级的是接口,然后是抽象类实现接口,最后才到具体类实现(例如java的监听器是一个接口,而适配器就是一个抽象类)。 & &抽象类则不一样,抽象类作为系统中多个子类的共同父类,它所体现的是模板式设计。抽象类作为多个子类的的抽象父类,可以被当成系统实现过程中的中间产品,这个产品已经实现了系统的部分功能(那些在抽象类中已经提供实现的方法),但这个产品依然不能当成最终产品,必须有更进一步的完善(继承),这种完善可能有好几种不同的方式。除此之外,接口和抽象类在用法上也存在一下区别:l接口里不能定义静态方法;抽象类里可以定义静态方法。l接口里不包含构造器,抽象类可以包含构造器。抽象类里的构造器并不是用于创建对象,而是让其子类调用这些构造器来完成属于抽象类的初始化操作。l接口里不能包含初始化块,但抽象类可以包含初始化块。l接口里不包含已经提供实现的方法,只能包含抽象方法,;抽象类则完全可以包含普通方法。l接口里只能定义静态常量,不能定义其他变量。抽象类既可以定义普通变量,也可以定义静态常量。注意:在接口里定义的接口、枚举类、变量默认都采用public static两个修饰符,不管定义时是否指定这两个修饰符,系统都会自动使用public static对他们进行修饰,同理,在接口里,会默认使用public abstract修饰方法。
了这篇文章
类别:┆阅读(0)┆评论(0)

我要回帖

更多关于 抽象类跟接口的异同 的文章

 

随机推荐