2 u013179958 u013179958 于 2016.03.26 13:38 提问

关于‘abstract class和interface有什么区别’这个问题的一些疑问?

1、抽象类里面可以用普通方法,而接口中的方法全部都是抽象的;
2、抽象类中可以有非 public static final修饰的属性,接口中的属性都是public static final修饰的
3、抽象类有构造方法,接口没有构造方法
4、抽象类中可以有静态方法,接口中不能有静态方法
5、类与抽象类的关系是继承,而且是单继承。类与接口的关系是实现,而且是多实现。
6、抽象类由abstract class声明,接口由interface声明
7、子类与它继承的抽象类的关系是 B is A,实现类与它所实现的接口的关系是 B like A
8、在应用范围上来说,接口往往在程序设计的时候,用来定义程序模块的功能,方便各模块协同工作;抽象类是对相似类进行抽象,形成一个抽象的父类可供重用!

以上是问题的答案,哪位可以解释一下,每一条答案背后的含义,设计者为什么要这么做?

3个回答

nijiayy
nijiayy   2016.03.26 14:58
已采纳

抽象类的话和接口大多是需要一个实现类来实现的吧,抽象类的话,一个实现类只能extends一个抽象类,然而一个实现类可以implement多个接口,便于开发时降低模块之间的耦合性,例如:我要写一个商家发布广告的实现类,这样就可以implement用户信息的接口和广告信息的接口在一个类中实现,而单独继承一个用户抽象类和广告抽象类的话都是是不能完成这个功能的。个人理解。。。仅供参考。。。

ly881010
ly881010   2016.03.27 17:48

因为类只能单继承, 要实现多继承必须不断发展下级, 耦合性大,
随意java中可以用 接口来实现多继承,

多用面向接口编程,少用继承,

sinat_29048381
sinat_29048381   2016.03.29 20:22

抽象类里面的方法可以有实现的方法,而接口里的方法必须全都是没实现的,而且不能带方法体(大括号和其中的部分)

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
抽象类(abstract class)和接口(Interface)的区别
前言 抽象类(abstract class)和接口(Interface)是Java语言中对于抽象类定义进行支持的两种机制,赋予了Java强大的面向对象能力。二者具有很大的相似性,甚至可以相互替换,因此很多开发者在进行抽象类定义时对于abstractclass和Interface的选择显得比较随意。其实,两者之间还是有很大的区别的。本文将对它们之间的区别进行剖析,并提供一个在二者之间进行选择的
抽象类(abstract class)和接口(interface)有什么异同?【Java面试题】
1、抽象类可以包含非抽象的方法,而接口中的方法必须是抽象的。 2、继承抽象类在Java语言体系中体现一种继承关系,在合理的继承关系中,父类和派生类比如按存在is-a关系。而实现接口则体现一种has-a关系,实现者仅仅是实现了interface定义的契约而已。 3、抽象类中可以有成员变量,而接口中不能有成员变量。 4、抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的属性可以是任意
C# interface与abstract class区别
C# interface与abstract class区别 一、abstract class abstract 声明抽象类抽象方法,一个类中有抽象方法,那么这个类就是抽象类了。所谓的抽象方法,就是不含主体(不提供实现方法),必须由继承者重写。因此,抽象类不可实例化,只能通过继承被子类重写。 二 interface 声明接口,只提供一些方法规约,不提供任何实现;不能用public、abstract等修饰,无字段、常量,无构造函数。 三、区别 1.interface中不能有字段,而abstract class
abstract class 和 interface 区别
相信这个问题一定困扰不少小伙伴,今天来谈谈自己的理解 首先从概念上来区分 abstract class :就是抽象类,用关键字abstract来修饰的类称为抽象类(abstractclass) interface:用interface关键字来修饰的称为接口。 进入正题: 抽象类: 抽象类和抽象方法都通过abstract关键字来修饰 抽象类不能实例化,抽
java接口(interface)与抽象类(abstract class)的区别
很久没有看到如此精辟的文章了!作者写得实在太好了!正在学JAVA或者想了解抽象类与接口的朋友,绝对不可错过!本人极力推荐! OOP中接口与抽象类的区别 Java语言接口与继承的本质 深入理解接口和抽象类   OOP中接口与抽象类的区别 OOP中的INTERFACE和ABSTRACT CLASS是两个不同的概念 我们在使用的时候往往将两个混在一起使用,不做什么区别,大家可能在定义上对
interface和abstract 的区别和相同点
在Java语言中,abstract class和interface是支持抽象类定义的两种机制。 不能创建abstract类的实例,然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。 不能有抽象构造函数或抽象静态方法。 Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类。 接口(interface)是抽象类的变体。 在接口中,所有方法都是
Java中abstract class和interface的区别
在Java语言中,abstract和interface是支持抽象类定义的两种机制。正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,甚至可以相互替换,因此很多开发者在进行抽象类定义时对于abstract class和interface的选择显得比较随意。其实,两者之间还是有很大的区别的,
abstract class和interface有什么区别(二)
<br />1. 引言<br />在我之前的一篇post《抽象类和接口的谁是谁非》中,和同事管伟的讨论,得到很多朋友的关注,因为是不成体系的论道,所以给大家了解造成不便,同 时关于这个主题的系统性理论,我认为也有必要做以总结,因此才有了本篇的新鲜出炉。同时,我将把上贴中的问题顺便也在此做以交代。 <br />2. 概念引入<br />●什么是接口? <br />接口是包含一组虚方法的抽象类型,其中每一种方法都有其名称、参数和返回值。接口方法不能包含任何实现,CLR允许接口可以包含事件、属性、索引 器、静
Java7特性中,abstract class和interface有什么区别
先上一道牛客网上面的Java题目: Java7特性中,abstract class和interface有什么区别。 A、抽象类可以有构造方法,而接口中不能有构造方法 B、抽象类中可以有普通变量,接口中没有普通变量 C、抽象类中不可以包含静态方法,接口中可以包含静态方法 D、一个类中可以实现多个接口,但是只能继承一个抽象类
接口(interface)和抽象类(abstract class)的区别
    接口和抽象类是支持抽象定义的两种机制。两者具有很大的相似性,同时也存在很大的区别。    接口是公开的,里面不能有私有的方法或变量,是用于让别人使用的,抽象类是可以有私有的方法或者私有的变量,如果一个类中有抽象方法,那么就是抽象类。在java语言中,可以把类或类中方法声明为abstract来表示一个类是抽象类。接口是指一个方法的集合,接口中所有的方法都没有方法体,在java语言中用关键字i...