接口与抽象类的终极区别

接口与抽象类都是用来将一系列东西抽象出来的,或者说是用来定义某类东西的。

但他们的使用是有区别的。

区别在于,他们定义某类东西的时候,是将动作集还是数据集抽象出来。

只需要将动作集抽象出来就能定义为一类东西的话,就用接口。

只需要/还需要将数据集抽象出来才能定义为一类东西的话,就用抽象类。

PS:数据集不是指 Set,是指一个或者多个数据,可以是属性、成员……等可用于储存数据的对象。

所以有以下结论:

一、接口是抽象类的一个(动作)子集。

二、接口的作用在于,定义某类东西只需要将动作集抽象出来就可以完整定义。

  比如,集合接口(ICollection),集合只需要将动作集抽象出来就可以说明这个对象是个集合,而集合对象内部封装的是什么数据(理论上)都可以。只要该对象具有迭代、移动、增加、删除……这些动作就是一个集合,完全可以封装一个 string 为集合对象,只要能够实现(Icollection)的动作,比如可以用“|”做分隔符,分隔子元素,然后实现迭代、移动、增加……,只是很蛋疼而已。

三、抽象类的作用在于,定义某类东西必须将数据集抽象出来才能完整定义,并不一定须要将动作集抽象出来,或者定义某一类东西只是为了意义上的区分,而不是为了定义。

  比如,数据流基类(Stream),对于一个数据流来说,无法只将动作集抽象出来就能完整定义一个对象是不是数据流,也无法说明该对象含有某些数据就是数据流对象(无法将数据集抽象出来),但仍然需要在意义上进行区分,所以就定义为数据流。

  又比如,数据库命令基类(DbCommand),对于这样一个定义,只将动作集抽象出来是不够的,必须要将数据集抽象出来才能完成定义,比如连接对象、事务对象……,所以就须要定义为抽象类。

其实还有要注意的就是。

接口与抽象类,并不是因为接口或者抽象类的限制,才衍生出上面的使用方法。

而是发明面向对象的人,有以上的需求,才去发明接口与抽象类的。所以大家思考的时候,不应该从上而下,而应该从下而上。

时间: 2024-08-04 18:41:40

接口与抽象类的终极区别的相关文章

Java接口和抽象类有什么区别,哪些时候用接口,哪些时候用抽象类?

Java接口和抽象类有什么区别,哪些时候用接口,哪些时候用抽象类? 2013-01-05 17:16:09|  分类: JAVA |  标签:java  |举报|字号 订阅 下面比较一下两者的语法区别:1.抽象类可以有构造方法,接口中不能有构造方法.2.抽象类中可以有普通成员变量,接口中没有普通成员变量3.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法.4. 抽象类中的抽象方法的访问类型可以是public,protected和(默认类型,虽然eclips

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

接口和抽象类有什么区别 你选择使用接口和抽象类的依据是什么? 接口和抽象类的概念不一样.接口是对动作的抽象,抽象类是对根源的抽象. 抽象类表示的是,这个对象是什么.接口表示的是,这个对象能做什么.比如,男人,女人,这两个类(如果是类的话--),他们的抽象类是人.说明,他们都是人. 人可以吃东西,狗也可以吃东西,你可以把"吃东西"定义成一个接口,然后让这些类去实现它. 所以,在高级语言上,一个类只能继承一个类(抽象类)(正如人不可能同时是生物和非生物),但是可以实现多个接口(吃饭接口.走

接口和抽象类有什么区别?你选择使用接口和抽象类的依据是什么?

原文链接: (1)接口和抽象类有什么区别 (2)深入理解Java的接口和抽象类

【转载】接口和抽象类有什么区别

原文出处:http://blog.csdn.net/fenglibing/article/details/2745123 接口和抽象类有什么区别 你选择使用接口和抽象类的依据是什么? 接口和抽象类的概念不一样.接口是对动作的抽象,抽象类是对根源的抽象. 抽象类表示的是,这个对象是什么.接口表示的是,这个对象能做什么.比如,男人,女人,这两个类(如果是类的话……),他们的抽象类是人.说明,他们都是人. 人可以吃东西,狗也可以吃东西,你可以把“吃东西”定义成一个接口,然后让这些类去实现它. 所以,在

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

接口和抽象类有什么区别 你选择使用接口和抽象类的依据是什么? 接口和抽象类的概念不一样.接口是对动作的抽象,抽象类是对根源的抽象. 抽象类表示的是,这个对象是什么.接口表示的是,这个对象能做什么.比如,男人,女人,这两个类(如果是类的话……),他们的抽象类是人.说明,他们都是人. 人可以吃东西,狗也可以吃东西,你可以把“吃东西”定义成一个接口,然后让这些类去实现它. 所以,在高级语言上,一个类只能继承一个类(抽象类)(正如人不可能同时是生物和非生物),但是可以实现多个接口(吃饭接口.走路接口).

(转)接口和抽象类有什么区别

接口和抽象类有什么区别 你选择使用接口和抽象类的依据是什么? 接口和抽象类的概念不一样.接口是对动作的抽象,抽象类是对根源的抽象. 抽象类表示的是,这个对象是什么.接口表示的是,这个对象能做什么.比如,男人,女人,这两个类(如果是类的话……),他们的抽象类是人.说明,他们都是人. 人可以吃东西,狗也可以吃东西,你可以把“吃东西”定义成一个接口,然后让这些类去实现它. 所以,在高级语言上,一个类只能继承一个类(抽象类)(正如人不可能同时是生物和非生物),但是可以实现多个接口(吃饭接口.走路接口).

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

接口和抽象类有什么区别 你选择使用接口和抽象类的依据是什么? 总结几句话来说: 1.抽象类和接口都不能直接实例化,如果要实例化,抽象类变量必须指向实现所有抽象方法的子类对象,接口变量必须指向实现所有接口方法的类对象. 2.抽象类要被子类继承,接口要被类实现. 3.接口只能做方法申明,抽象类中可以做方法申明,也可以做方法实现 4.接口里定义的变量只能是公共的静态的常量,抽象类中的变量是普通变量. 5.抽象类里的抽象方法必须全部被子类所实现,如果子类不能全部实现父类抽象方法,那么该子类只能是抽象类.

java中接口和抽象类有什么区别,举例!

接口和抽象类有什么区别?(视频下载) (全部书籍)答:马克-to-win:抽象类里可以有实现的方法,接口里不能有,所以相对来讲各方面实现都简单(尤其动态方法调度).另外:类可以实现多个接口.反过来说,也正是抽象类一个致命伤:类只能继承一个超类(抽象类或其他类)..................详情请进:http://www.mark-to-win.com/index.html?content=JavaBeginner/javaUrl.html&chapter=JavaBeginner/Java

接口跟抽象类之间的区别

接口和抽象类有什么区别 你选择使用接口和抽象类的依据是什么? 接口: interface Animal { public void eat(); public void travel(); } 抽象类: /* 文件名 : Employee.java */ public abstract class Employee { private String name; private String address; private int number; public Employee(String n