abstract class和interface有什么区别

bsar407
推荐于2018-02-13 · TA获得超过4816个赞
知道小有建树答主
回答量:962
采纳率:0%
帮助的人:2247万
展开全部
abstract 类不能创建的实例对象。含有abstract方法的类必须定义为abstractclass, abstractclass类中的方法不必是抽象的。 abstractclass类中定义抽象方法必须在具体(Concrete)子类中实现,所以,不能有抽象构造方法或抽象静态方法。 如果的子类没有实现抽象父类中的所有抽象方法,那么子类也必须定义为abstract类型。接口(interface)可以说成是抽象类的一种特例,接口中的所有方法都必须是抽象的。 接口中的方法定义默认为publicabstract类型,接口中的成员变量类型默认为 public staticfinal。 下面比较一下两者的语法区别:1. 抽象类可以有构造方法,接口中不能有构造方法。2. 抽象类中可以有普通成员变量,接口中没有普通成员变量3. 抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。4. 抽象类中的抽象方法的访问类型可以是public, protected和(默认类型, 虽然eclipse下不报错,但应该也不行),但接口中的抽象方法只能是public类型的,并且默认即为publicabstract类型。5. 抽象类中可以包含静态方法,接口中不能包含静态方法6. 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是 public staticfinal类型,并且默认即为 一个类可以实现多个接口,但只能继承一个抽象类。
说太多不如沉黙
高粉答主

2018-03-30 · 繁杂信息太多,你要学会辨别
知道小有建树答主
回答量:187
采纳率:100%
帮助的人:5.1万
展开全部

区别如下:

  1. 相同点
    两者都是抽象类,都不能实例化。

    interface实现类及abstrct class的子类都必须要实现已经声明的抽象方法。

  2. 不同点

    interface需要实现,要用implements,而abstract class需要继承,要用extends。

    一个类可以实现多个interface,但一个类只能继承一个abstract class。

    interface强调特定功能的实现,而abstract class强调所属关系。

    尽管interface实现类及abstrct class的子类都必须要实现相应的抽象方法,但实现的形式不同。interface中的每一个方法都是抽象方法,都只是声明的 (declaration, 没有方法体),实现类必须要实现。而abstract class的子类可以有选择地实现。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式