抽象类和接口有什么区别?

作者&投稿:郦须 (若有异议请与网页底部的电邮联系)
接口和抽象类的区别是什么?~

接口与抽象类的区别是:
1、抽象类和接口都不能直接实例化。如果要实例化,抽象类变量必须指向实现所有抽象方法的子类对象,接口变量必须指向实现所有接口方法的类对象。
2、抽象类要被子类继承,接口要被类实现。
3、接口只能做方法申明,抽象类中可以做方法申明,也可以做方法实现。
4、接口里定义的变量只能是公共的静态的常量,抽象类中的变量是普通变量。
5、抽象类里的抽象方法必须全部被子类所实现,如果子类不能全部实现父类抽象方法,那么该子类只能是抽象类。同样,实现接口的时候,如不能全部实现接口方法,那么该类也只能为抽象类。
6、抽象方法只能申明,不能实现。

接口泛指实体把自己提供给外界的一种抽象化物(可以为另一实体),用以由内部操作分离出外部沟通方法,使其能被内部修改而不影响外界其他实体与其交互的方式。
抽象类往往用来表征对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。
接口是引用类型的,和抽象类的相似之处有三点:
1、不能实例化。
2、包含未实现的方法声明。
3、派生类必须实现未实现的方法,抽象类是抽象方法,接口则是所有成员(不仅是方法包括其他成员)。

抽象类和接口的主要区别是,定义不同、方法不同、成员变量不同,具体如下:
一、定义不同
1、抽象类
抽象类表示该类中可能已经有一些方法的具体定义。

2、接口
接口仅仅只能定义各个方法的界面(方法名,参数列表,返回类型),并不关心具体细节。
二、方法不同
1、抽象类
抽象类当中可以存在非抽象的方法。
2、接口
接口里面的方法只是一个声明必须用public来修饰没有具体实现的方法。
三、成员变量不同
1、抽象类
抽象类中的成员变量可以被不同的修饰符来修饰。
2、接口
接口中的成员变量默认的都是静态常量。
以上内容参考 百度百科-抽象类

答得稀烂。。。\x0d\x0a网上再学习了一次,在这里记下看到各位大虾的金言。\x0d\x0a一、抽象类:\x0d\x0a在面向对象领域,抽象类主要用来进行类型隐藏。那什么是类型隐藏呢?我们可以构造出一个固定的一组行为的抽象描述,但是这组行为却能够有任意个可能的具体实现方式。这个抽象描述就是抽象类,而这一组任意个可能的具体实现则表现为所有可能的派生类。好比,动物是一个抽象类,人、猴子、老虎就是具体实现的派生类,我们就可以用动物类型来隐藏人、猴子和老虎的类型。( 参考doSome方法)二、接口:\x0d\x0a三、抽象类和接口的区别:\x0d\x0a首先,抽象类在Java语言中表示的是一种继承关系,一个类只能使用一次继承关系。但是,一个类却可以实现多个接口。也许,这是Java语言的设计者在考虑Java对于多重继承的支持方面的一种折中考虑吧。 其次,在抽象类的定义中,我们可以赋予方法的默认行为。但是在接口的定义中,方法却不能拥有默认行为,为了绕过这个限制,必须使用委托,但是这会 增加一些复杂性,有时会造成很大的麻烦。 抽象类在Java语言中体现了一种继承关系,要想使得继承关系合理,父类和派生类之间必须存在”is a”关系,即父类和派生类在概念本质上应该是相同的。对于接口来说则不然,并不要求接口的实现者和接口定义在概念本质上是一致的,仅仅是实现了接口定义的契约而已。接口表示的是”like\x0d\x0aa”关系。 使用抽象类来定义允许多个实现的类型,比使用接口有一个明显的优势:抽象类的演化比接口的演化要容易的多。在后续的发行版中,如果希望在抽象类中增加一个方法,只增加一个默认的合理的实现即可,抽象类的所有实现都自动提供了这个新的方法。对于接口,这是行不通的。虽然可以在骨架实现类中增加一方法的实现来解决部分问题,但这不能解决不从骨架实现类继承的接口实现的问题。由此,设计公有的接口要非常谨慎,一旦一个接口被公开且被广泛实现,对它进行修改将是不可能的。 所以,使用接口还是抽象类,取决于我们对问题的概念的本质理解和设计的意图。\x0d\x0aJava接口与抽象类的相同点:\x0d\x0a1. 都不能被实例化。\x0d\x0a2. 都能包含抽象方法。\x0d\x0a抽象类与接口紧密相关。然接口又比抽象类更抽象,这主要体现在它们的差别上:1)类可以实现无限个接口,但仅能从一个抽象(或任何其他类型)类继承,从抽象类派生的类仍可实现接口,从而得出接口是用来解决多重继承问题的。2)抽象类当中可以存在非抽象的方法,可接口不能且它里面的方法只是一个声名必须用public来修饰没有具体实现的方法。3)抽象类中的成员变量可以被不同的修饰符来修饰,可接口中的成员变量默认的都是静态常量(static fainl)。4)这一点也是最重要的一点本质的一点抽象类是对象的抽象,然接口是一种行为规范。\x0d\x0a例如每个接口可以代表一种最顶层的抽象,可以理解为代表一类东西,如果一个类实现了多个接口,那这个类就有了多种类型,即接口是定义混合类型的理想工具最后:有一种设计模式,就是,默认适配模式,意思就是说,首先定义一个接口,通过抽象类实现这个接口,并实现一些子类不需要一定实现的方法,然后,子类就可以选择是继承接口,实现所有方法,还是直接继承这个抽象类实现具体需要的方法,\x0d\x0a定义成抽象类是为了以后要其子类来继承的,因为父类里有很多方法是无法定义具体的实现的,只能定义一个原型,让子类来分别实现!所以要定义成抽象的!\x0d\x0a简单来说就是\x0d\x0a抽象类是在接口和实体类之间的一个桥梁例如做一个接口叫做飞行FlyAnimalAction,里面定义一个方法叫做flying,再定义一个方法叫做eat\x0d\x0a做一个类叫做蚊子实现接口,蚊子要实现flying方法,实现自己的eat方法\x0d\x0a做一个类叫做苍蝇实现接口,苍蝇也要实现flying方法,实现自己的eat方法\x0d\x0a你发现所有会飞的动物都要实现这个接口,很麻烦,不如\x0d\x0a做一个抽象类FlyAnimal,然后实现上面的接口\x0d\x0a在里面实现flying这个方法,因为大部分的飞行动作是一样的,而eat方法则继续写成抽象方法,因为大部分的动物吃东西是不一样的\x0d\x0a下面你再写蚊子类就简单了,可以直接继承这个抽象类,然后实现自己的吃方法就行了\x0d\x0a而且苍蝇类的制作也是一样,这个时候抽象类的功能就显示出来了,当然抽象类的功能远远不是这些,只是初期理解到这里就够了。


什么是对象,什么是类;什么是封装,什么是多态,什么是继承;什么是抽象类...
public String talk(String content) { System.out.print(content);} 子类继承该类,所以也具有talk这个方法,他重新定义了该方法的实现 public String talk(String content) { System.out.println("Hi" + content);} 抽象类和一般类的最大区别,就是不能实例化一个对象,但是它可以被继承。接口则...

如何理解面向对象、面向接口、面向服务?他们有什么区别?
类实例化一下(也就是说抽象)就是对象了。。所有东西都可以看做一个对象,比如人,他有行为(吃喝玩乐,在程序里面就叫做属性,而怎么样吃喝玩乐就是涉及到程序里面的方法了) 接口呢:就要涉及到封装的问题了,学过ASP.NET的人都知道,有一种东西叫做用户控件,可以把自己做好的一个登陆页面做成一...

c#接口与抽象类的疑问
接口一般用于更高层次的抽象和概括。他这个例子也能理解,人、鱼、青蛙,共性较少,只能用一些零散的方法来描述共性,那么就用接口;后者共性较多,把后者的共有方法、属性归纳起来,可以大致组成一个 AbstractFish 类了,那么就用抽象类。而会游泳,作为接口,可以适用多个不同的类。

接口和抽象类有什么区别?
抽象类用来表征对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。2、存在情况不同:接口当中不能存在非抽象的方法。抽象类当中可以存在非抽象的方法。3、成员变量不同:接口中的成员变量默认的都是静态常量(static final)。抽象类中的成员变量可以被不...

java的接口和抽象类分别有什么作用?
4.实现抽象类和接口的类必须实现其中的所有方法。抽象类中可以有非抽象方法。接口中则不能有实现方法。 5.接口中定义的变量默认是public static final 型,且必须给其初值,所以实现类中不能重新定义,也不能改变其值。 6.抽象类中的变量默认是 friendly 型,其值可以在子类中重新定义,也可以重新赋值。 7.接口中...

接口和抽象类有什么联系和区别?
引言:在学习编程语言的时候,很多人都会接触到Java,Java的学习过程中,除了基本的语法以外,那么在理解Java的上层逻辑语言中,肯定是会学到接口和抽象类的。那么接口和抽象类有什么联系和区别呢?两者的联系要区别接口和抽象类是被很多人混淆的,主要是两者的功能是比较相似的,就是为了能够达到转化的...

接口和抽象类的区别
在Java中被abstract关键字修饰的类称为抽象类,被abstract关键字修饰的方法称为抽象方法,抽象方法只有方法的声明,没有方法体。抽象类是用来捕捉子类的通用特性的。它不能被实例化,只能被用作子类的超类。抽象类是被用来创建继承层级里子类的模板。Java中接口使用interface关键字修饰。接口是抽象方法的集合...

TypeScript,面向对象,类、构造函数、继承、抽象类、接口和封装
3、一个类去实现接口,实现接口时类中要包括接口中的所有属性。封装和属性的封装 1、private修饰符,私有的属性,私有属性只能在类内部进行访问修改。2、protected修饰符,受保护的属性,只能在当前类和当前类的子类中访问。3、public修饰符,共有的属性,修饰的属性可以再任意位置访问修改默认值。4、...

java中接口是不是就是类型?接口由对象的类型决定? 对象的接口和用inte...
感觉你对题目中提及的几个概念有点混淆,帮助你澄清下:接口(interface),类(class),类型(应用类型如String和基本类型int),对象。一个一个讲;接口:就是抽象的大方针,犹如口号,如同党说,要实现四个现代化。java语言就是 interface modern 类:就是一类事物,比如说class transportation ...

关于抽象类和接口的区别说法不正确的是
A 抽象类的设计理念介于普通的类与接口之间,抽象类的目标是为了设计一个通用的、允许有多个实现的类型。包含抽象方法的类叫做抽象类;抽象类无法实例化,如果一个类继承了某个抽象类,并且想实例化,就需要实现抽象类中的所有抽象方法。抽象类在Java中的应用,最经典的是“骨架模式”——和接口配合使用...

运城市13768077796: 抽象类和接口的区别是什么 -
虿凤振源: 一、抽象类: 抽象类是特殊的类,只是不能被实例化;除此以外,具有类的其他特性;重要的是抽象类可以包括抽象方法,这是普通类所不能的.抽象方法只能声明于抽象类中,且不包含任何实现,派生类必须覆盖它们.另外,抽象类可以派生...

运城市13768077796: 接口和抽象类的区别 -
虿凤振源: 方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况.不能创建abstract 类的实例.然而可以创建一个变量,其类型是一个抽象类,并让...

运城市13768077796: 接口和抽象类的区别是什么? -
虿凤振源: Java提供和支持创建抽象类和接口.它们的实现有共同点,不同点在于: 接口中所有的方法隐含的都是抽象的. 抽象类则可以同时包含抽象和非抽象的方法. 类可以实现很多个接口,但是只能继承一个抽象类类如果要实现一个接口,它必须要...

运城市13768077796: 抽象类和接口有什么区别吗? -
虿凤振源: 1、抽象类和接口都不能直接实例化,如果要实例化,抽象类变量必须指向实现所有抽象方法的子类对象,接口变量必须指向实现所有接口方法的类对象.2、抽象类要被子类继承,接口要被类实现.3、接口只能做方法申明,抽象类中可以做方...

运城市13768077796: “抽象类”和“接口”的区别是什么? -
虿凤振源: “抽象类”和“接口”的区别如下:1) 在抽象类中可以写非抽象的方法,从而避免在子类中重复书写他们,这样可以提高代码的复用性,这是抽象类的优势;接口中只能有抽象的方法.2) 一个类只能继承一个直接父类,这个父类可以是具体的类也可是抽象类;但是一个类可以实现多个接口.图中如果Sparrow继承类Bird 类 ,Boyin继承Airplane类,Sparrow 和Boyin想使用同样的flay方法那么是没有办法实现的,因为类的继承是单继承.如果Bird和Airplane是接口那么Boyin想使用同样的flay方法就很简单了.在写一个接口让Sparrow和Boyin实现这个接口就可以了如下图:

运城市13768077796: 接口和抽象类的区别是什么? -
虿凤振源: 接口和抽象类的定义类似、区别是:一个类实现接口、必须实现接口里的所有方法、而且一个类可以实现多个接口(相当于多继承)接口使用interface关键字、而抽象类使用的是abstract 关键字、...

运城市13768077796: 抽象类和接口的区别? -
虿凤振源: 1.抽象类 和 接口 都是用来抽象具体对象的. 但是接口的抽象级别最高2.抽象类可以有具体的方法 和属性, 接口只能有抽象方法和不可变常量3.抽象类主要用来抽象类别,接口主要用来抽象功能.4.一个类只能继承一个类,但是接口可以实现多个.

运城市13768077796: 抽象类和接口的区别是什么? Java SE
虿凤振源: 1.接口是一个特殊的抽象类! 2.抽象类中可以有非抽象方法,接口内的方法全部都是抽象的. 3.可以由非抽象类派生出抽象类,但接口只能继承接口. 4.一个类可以实现多个接口,但只能继承一个抽象类.

运城市13768077796: java中抽象类跟接口的区别和总结 -
虿凤振源: 1, 抽象类和接口都代表系统的抽象层; 2, 抽象类和接口都不能被实例化,但都可以继承或者实现抽象类或者接口的具体类,通过定义引用变量来构造; 3, 抽象类和接口都包含抽象方法; 4, 抽象类中可以为部分方法提供默认的实现,可以...

运城市13768077796: 抽象类与接口的区别?? -
虿凤振源: 抽象类里面可以有非抽象方法 但接口里只能有抽象方法 声明方法的存在而不去实现它的类被叫做抽像类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况.不能创建abstract 类的...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网