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

2020-11-22 18:12:11 字数 5561 阅读 5309

1楼:匿名用户

java中对的抽象类和接口对的区别:

抽象类:

抽象类内允许有普通变量和普通方法;

抽象类必须有abstract关键字;

抽象类内可以没有抽象方法,但不能实例化;

抽象类内有抽象方法的一定是抽象类;

抽象类不能被实例化,但是有构造方法(派生类可以扩展)。

接口:接口只声明,没有方法体,如:public abstract void func();

接口内定义的变量都默认是public static final ,必须被显示初始化;

接口没有构造方法,不能实例化;

实现接口的类要实现所有的抽象方法,否则该类就必须声明为抽象类,加上 abstract关键字;

.接口不可以实现接口,所有接口都是抽象方法,但是接口支持多继承。

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

2楼:靠名真tm难起

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

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

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

3楼:匿名用户

简单来说,

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

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

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

4楼:仲维传媒

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

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

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

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

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

5楼:匿名用户

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

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

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

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

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

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

6楼:手机用户

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

java抽象类和接口的区别?

7楼:小童鞋_成

您好,提问者:

1、抽象类:

如果这个类里面的方法有一个是抽象的,那么这个类必须是抽象的。

抽象类中的方法,子类必须实现。

抽象类中可以有变量,可以有方法体的方法。

2、接口:

接口中方法都默认是public 的,不能有方法体。

接口中的变量都常量,都是public static final 的,必须先赋值。

如果一个类实现了此接口,必须覆盖接口中的所有抽象方法。

8楼:吃饱饱心情好好

1、抽象类里面可以有非抽象方法

但接口里只能有抽象方法

声明方法的存在而不去实现它的类被叫做抽像类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽像类,并让它指向具体子类的一个实例。

不能有抽像构造函数或抽像静态方法。abstract 类的子类为它们父类中的所有抽像方法提供实现,否则它们也是抽像类为。取而代之,在子类中实现该方法。

知道其行为的其它类可以在类中实现这些方法。

2、接口(inte***ce)是抽像类的变体。在接口中,所有方法都是抽像的。多继承性可通过实现这样的接口而获得。

接口中的所有方法都是抽像的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。

当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对像上调用接口的方法。由于有抽像类,它允许使用接口名作为引用变量的类型。

通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。

java中接口和抽象类的区别是什么

9楼:匿名用户

1、抽象类是类,它的子类

10楼:暗处灯

定义的关键字:abstract class;inte***ce;

组成:常量,变量,抽象方法,普通方法,构造方法;全局常量,抽象方法;

权限:可以是各种权限;只能是public;

关系:抽象类可以实现多个接口;接口不能实现抽象类;

使用:子类利用extends;子类利用implements实现接口;

涉及的设计模式:模板设计模式;工厂,**设计模式;

局限性:一个子类只能继承一个抽象类;一个子类可以继承多个接口;

如果抽象类和接口都能实现的操作,一般选择接口,因为可以避免单继承局限;

11楼:亘古也匆匆

1、接口可以多重继承,抽象类只能单继承

2、类实现(implements)某一接口必须实现该接口的所有方法,一个类实现(extends)一个抽象类 则可以根据需要有选择的实现需要的方法

3、接口是一种标准,

12楼:匿名用户

你可以把接口看成一种抽象类 最大的不同就在于接口能多重继承 类只能单继承

13楼:匿名用户

接口 定义方法,抽象类实现方法

14楼:匿名用户

其实差别并不大,抽象类和接口中的方法都需要子类或实现类去覆写(当然抽象类中的方法也可以交给子类的子类去覆写)。由于java只能单继承,所以出现了接口,它们都能很好的为“多态”服务,但使用接口编程能更好的实现解耦。

java中抽象类和接口的区别

15楼:青鸟中关村专家

一个类可以有多个接口 只能有继承一个父类

抽象类可以有构造方法,接口中不能有构造方法。

抽象类中可以有普通成员变量,接口中没有普通成员变量接口里边全部方法都必须是abstract的 抽象类的可以有实现了的方法

抽象类中的抽象方法的访问类型可以是public,protected 但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型

抽象类中可以包含静态方法,接口中不能包含静态方法抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public static final类型。

16楼:育知同创教育

1.一个类可以实现多个接口 ,但却只能继承最多一个抽象类。

2.抽象类可以包含具体的方法 , 接口的所有方法都是抽象的。

3.抽象类可以声明和使用字段 ,接口则不能,但接口可以创建静态的final常量。

4.接口的方法都是public的,抽象类的方法可以是public,protected,private或者默认的package;

5.抽象类可以定义构造函数,接口却不能。

java中抽象类和接口有什么区别

17楼:大仙儿不是仙女

抽象类抽象类是用来捕捉

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

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

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

18楼:691归52划

抽象类就是为了继承而存在的,如果你定义了一个抽象类,却不去继承它,那么等于白白创建了这个抽象类,因为你不能用它来做任何事情。

接口是一种极度抽象的类型,它比抽象类更加“抽象”,并且一般情况下不在接口中定义变量。

抽象类是对一种事物的抽象,即对类抽象,而接口是对行为的抽象。

19楼:廖实藤鸟

抽象类是用来捕捉子类的通用特性的

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

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

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

扩展资料:

抽象类往往用来表征对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。

通常在编程语句中用

abstract

修饰的类是抽象类。在c++中,含有纯虚拟函数的类称为抽象类,它不能生成对象;在java中,含有抽象方法的类称为抽象类,同样不能生成对象。

抽象类是不完整的,它只能用作基类。在面向对象方法中,抽象类主要用来进行类型隐藏和充当全局变量的角色。

参考资料:抽象类搜狗百科接口搜狗百科

20楼:嬴越柯鹏

他们讲的太繁琐了,

简单来说在接口里面定义的方法必须全部是

抽象方法,而

抽象类里面不知能定义抽象方法也可以定义实例方法。

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

1楼 匿名用户 抽象类 抽象类是用来捕捉子类的通用特性的 。它不能被实例化,只能被用作子类的超类。抽象类是被用来创建继承层级里子类的模板。 接口 接口是抽象方法的集合。如果一个类实现了某个接口,那么它就继承了这个接口的抽象方法。这就像契约模式,如果实现了这个接口,那么就必须确保使用这些方法。 接口只...

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

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