用法:

在abstract class方式中,类可以有自己的数据成员,也可以有非 abstract的成员方法,而在interface方式的实现中,类只能够有静态的不能被修改的数据成员(也就是必须是static final 的,不过在interface中一般不定义数据成员),所有的成员方法都是abstract的。从某种意义上说,interface是一种特殊形式的 abstract class。

存在原因:

进一步理解,关于java引入抽象类、接口的目的,向高手请教得到的答复如下:

1、从类的层次结构上看,抽象类是在层次的顶端,但在实际的设计当中,一般来说抽象类应当是后面才会出现。为什么?实际上抽象类的获取有点像数学中的提取公因式:ax+bx,x就是抽象类,如果你没有前面的式子,你怎么知道x是不是公因式呢?在这点上,也符合人们认识世界的过程,先具体后抽象。因此在设计过程中如果你得到大量的具体概念并从当中找到其共性时,这个共性的集合就是抽象类应当是没错的。 
2、interface从表面上看,和抽象类很相似,但用法完全不同。它的基本功能就是把一些毫不相关的类(概念)集合在一起形成一个新的、可集中操作的“新类”。我给学生的一个典型例子就是“司机”。谁可以当司机?谁都可以,只要领取了驾照。所以我不管你是学生,白领、蓝领还是老板,只要有驾照就是司机。 
interface DriverLicence { 
Licence getLicence(); 
}

class StudentDriver extends Student implements DriverLicence { 

class WhtieCollarEmployeeDriver extends WhtieCollarEmployee implements DriverLicence { 

class BlueCollarEmployeeDriver extends BlueCollarEmployee implements DriverLicence { 

class BossDriver extends Boss implements Driver { 
}

当我定义了“汽车”类后,我就可以指定“司机”了。

class Car { 
setDriver(DriverLicence driver); 

这时候,Car的对象并不关心这个司机到底是干什么的,他们的唯一共同点是领取了驾照(都实现了DriverLicence接口)。这个,应当是接口最强大的地方也是抽象类无法比拟的。 
      总结:抽象类是提取具体类的公因式,而接口是为了将一些不相关的类“杂凑”成一个共同的群体。通常我们平时养成良好的习惯就是多用接口,毕竟java是单继承,不像C++,但是在需要使用抽象类的时候一定还是要用的(有点类似goto的用法),呵呵。

参考链接:

http://www.cnblogs.com/xiaoao808/archive/2008/03/11/1100886.html //讲的不错

http://dev.yesky.com/436/7581936.shtml

转载于:https://www.cnblogs.com/zhongyuan/p/4075811.html

java中 抽象类+接口相关推荐

  1. java中抽象类 接口_java中的抽象类与接口

    1.抽象类的定义 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类. 2.简单实例 ...

  2. Java中抽象类和接口在概念、语法和应用上的区别和关系

    2019独角兽企业重金招聘Python工程师标准>>> 春招开始了,盆友们都忙着准备笔试.准备面试,复习学过的知识点,当然我也不例外,在这里祝每一个"有心人"心想 ...

  3. Java 中抽象类与接口

    Java 抽象类: 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这个类就是抽象类. 抽象类不能创 ...

  4. 关于Java中抽象类和接口的一点思索

    Java中抽象类和接口的一点思索 成员方法上的区别: 1. java中的抽象类可以提供成员方法的实现细节,抽象方法只能是被public和protected来修饰 配合abstract关键字,子类需要实 ...

  5. java中接口什么时候用_我什么时候应该在java中使用接口?

    在Java中精确使用接口的一个很好的例子将是理想的,适用于任何特定的规则. 看看丹以前所有的问题,他似乎只是逐字逐句地张贴家庭作业/考试问题. 令人惊讶的是,这些不是考试题或其他-今天才找到这个网站, ...

  6. java中抽象类继承抽象类_Java中的抽象类用示例解释

    java中抽象类继承抽象类 Abstract classes are classes declared with abstract. They can be subclassed or extende ...

  7. java中的接口的定义以及实现关系

    一.什么是接口? - 硬件接口:设备之间的连接方式 - 软件接口:程序代码,特殊的类,表示一种规范,是具有N个方法的特征集合. java中的接口: 专家说的多个抽象类的抽象就是接口. interfac ...

  8. java中的接口是什么?

    接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明.一个类通过继承接口的方式,从而来继承接口的抽象方法. 接口并不是类,编写接口 ...

  9. implements在java,implements在java中实现接口的方法

    本教程操作环境:windows7系统.java10版,DELL G3电脑. 1.概念 (1)关键字implements是一个类,实现一个接口用的关键字,它是用来实现接口中定义的抽象方法. (2)接口在 ...

最新文章

  1. Flutter框架分析(五)-- 动画
  2. 每日一皮:临近截止日期, 产品经理就这样看着我...
  3. 一份传世典文:十年编程(Teach Yourself Programming in Ten Years)
  4. 如何使用python批量下载-用Python调用迅雷实现后台批量下载
  5. 房地产萧条的两个标志
  6. 玩转C语言之自定义数据类型-typedef
  7. 从汇编角度看待函数调用
  8. 关于中国男女的一些私密数据......
  9. socket基本使用
  10. UCOSII操作系统(一)--基础知识
  11. cdrx8如何批量导出jpg_cdr怎么保存jpg格式
  12. [c++]数组的逆输出
  13. 【微信小程序】canvas生成分享图片海报模糊解决方法
  14. 基于PC的工业控制系统的优缺点分析
  15. windows 10桌面快捷方式小箭头
  16. Python|每日一练|素数对|优化算法|素数|素数对:找出素数对
  17. Pandas——掌握DataFrame的常用操作
  18. 中国头孢菌素药物行业市场供需与战略研究报告
  19. 深圳富士康有搞什么啊?又猝死了一个!
  20. matlab显示全球海岸线

热门文章

  1. [Drupal] How to display the month in French words.
  2. CISCO-CCNA课程介绍
  3. python运算符重载例子
  4. python装饰器改变命运
  5. Kafka Eagle 源码解读
  6. SQL 存储过程 解析XML
  7. 设计模式--简单工厂(Factory)模式
  8. xmpp这一段蛋疼的 坑,
  9. oracle数据库日期时间参数大全(一)
  10. 生物信息课程学习 --- 比对,BLAST,马尔可夫