为什么会出现接口?

接口的出现是为了扩展java中的类继承的单调性。这样使得功能更加丰富。

接口关键字?

定义接口interface,实现一个接口  implements

什么接口呢?

接口是一种特殊的抽象类,所谓的抽象类就是没必要实现的类,像你定义一个人,人可以分为很多种,老师、学生什么的,所以Person这个类就可以定义成抽象类,你还可以定义几个人的常用方法,不如走路、吃饭,这些方法也可以定义成抽象的,这样就形成了一个接口。你如果想要一个老师,那就实现这个Person接口,这样就可以实现走路或者吃饭的功能了,你还可以自己加功能,让这个类更像一个老师,就像USB接口,你只需把USB接到插口上就行,这样就可以实现你想要的功能 .

什么时候用接口呢?

“什么时候应当使用interface,什么时候应当使用abstract class。如果你是个有一年经验的java/C#程序员,你或许已经“感悟”到其中的差异但又讲不清楚。我这里试着讲清楚些。
1。从类的层次结构上看,抽象类通常是在层次的顶端,但在实际的设计实践当中,抽象类应当是最后出现的。为什么?实际上抽象类的获取有点像数学中的提取公因式:ax+bx+cx,x就是抽象类,如果你没有前面的式子,你怎么知道x是不是公因式呢?在这点上,也符合人们认识世界的过程,先具体后抽象。因此在设计过程中如果你得到大量的具体概念并从当中找到其共性时,这个共性的集合就是抽象类应当是没错的。
2。interface从表面上看,和抽象类很相似,但用法完全不同。它的基本功能就是把一些毫不相关的类(概念)集合在一起形成一个新的、可集中操作的“新类”。我给学生的一个典型例子就是“司机”。谁可以当司机?谁都可以,只要领取了驾照。所以我不管你是学生,白领、蓝领还是老板,只要有驾照就是司机。

interface Driver {
Licence getDriverLicence();
} class StudentDriver extends Student implements Driver {
}
class WhtieCollarEmployeeDriver extends WhtieCollarEmployee implements Driver {
}
class BlueCollarEmployeeDriver extends BlueCollarEmployee implements Driver {
}
class BossDriver extends Boss implements Driver {
}

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

class Car {
setDriver(Driver driver);
}

这时候,Car的对象并不关心这个司机到底是干什么的,他们的唯一共同点是领取了驾照(都实现了DriverLicence接口)。这个,应当是接口最强大的地方也是抽象类无法比拟的。

总结:抽象类是提取具体类的公因式,而接口是为了将一些不相关的类“杂凑”成一个共同的群体。至于他们在各个语言中的句法,语言细节并不是我关心的重点。 ”

网络转载——java接口的概念的更多相关文章

  1. java 接口的概念

    一:概念 接口是功能的集合.同样可以看做一种数据类型,是比抽象类更为抽象的“类”. 接口描述应该具备的方法,并没有具体的实现.具体实现由接口的实现类(相当于接口的子类来完成). 好处: 使功能和实现分 ...

  2. java接口理解(转载)

    今天和同事好好的讨论了java接口的原理和作用,发现原来自己的对接口的理解仅仅是局限在概念的高度抽象上,觉得好像理解了但是不会变化应用其实和没有理解差不多.以前看一个帖子说学习一个东西不管什么时候都要 ...

  3. JAVA的核心概念:接口(interface)

    JAVA的核心概念:接口(interface) 接口与类属于同一层次,实际上,接口是一种特殊的抽象类. 如:    interface IA{ }  public interface: 公开接口  与 ...

  4. java中接口的概念及使用(补充final修饰符的使用)

    接口 初期理解,可以是一个特殊的抽象类 当抽象类中的方法都是抽象的,那么该类可以通过接口的形式来表示 class 用于定义类 interface 用于定义接口 接口定义时,格式特点: 1.接口中常见的 ...

  5. Java 基础 面向对象: 接口(interface )概念 以及接口之练习3 -定义一个接口用来实现两个对象的比较并 判断instanceof是否为同类

    接口(interface )概念概念笔记 及测试代码: /** 面向对象: 接口(interface ) 是与类并行的一个概念: * 1.接口可以看成一个特殊的抽象类,它是常量与抽象方法的一个集合 * ...

  6. [转载]Java序列化与反序列化

    [转载]Java序列化与反序列化 来源: https://www.cnblogs.com/anitinaj/p/9253921.html 序列化和反序列化作为Java里一个较为基础的知识点,那你能说一 ...

  7. OpenCV4Android开发之旅(一)----OpenCV2.4简介及 app通过Java接口调用OpenCV的示例

    转自:  http://blog.csdn.net/yanzi1225627/article/details/16917961 开发环境:windows+ADT Bundle+CDT+OpenCV-2 ...

  8. java io-1基本概念

    java io-1基本概念 2015-07-03 15:17 648人阅读 评论(0) 收藏 举报  分类: [JavaSE](37)    目录(?)[+]   ------------------ ...

  9. Java-Runoob-面向对象:Java 接口

    ylbtech-Java-Runoob-面向对象:Java 接口 1.返回顶部 1. Java 接口 接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以 ...

随机推荐

  1. 转~~~ DIV+CSS实现三角形提示框

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <link rel= ...

  2. 王爽<汇编语言>实验十

    实验十 3.数值显示(以下程序附带测试程序) ;名称: dtoc ;功能: 将dword型数据转变为表示十进制数的字符串,字符串以0为结尾 ;参数: (ax)=dword型数据低字 ; (dx)=dw ...

  3. JavaScript中reduce()方法

    原文  http://aotu.io/notes/2016/04/15/2016-04-14-js-reduce/   JavaScript中reduce()方法不完全指南 reduce() 方法接收 ...

  4. Linux运维入门到高级全套常用要点

    Linux运维入门到高级全套常用要点 目 录 1. Linux 入门篇................................................................. ...

  5. fastdfs-nginx扩展模块源码分析

    FastDFS-Nginx扩展模块源码分析 1. 背景 在大多数业务场景中,往往需要为FastDFS存储的文件提供http下载服务,而尽管FastDFS在其storage及tracker都内置了htt ...

  6. 在asp.net中显示PDF的方法:

    来源:http://www.cnblogs.com/tengs2000/archive/2009/02/23/1396646.html 一.直接显示,使用的还是原页面的URL Response.Con ...

  7. IDEA使用maven中tomcat插件启动项目乱码问题

    今天用IDEA来启动项目,使用的是maven中的tomcat7插件,正常启动后,再页面操作新增或修改数据时,发生了诡异的事, 中文保存后全部乱码...顿时不淡定了,接着就开始排查原因 首先检查IDEA ...

  8. Android应用开发-数据存储和界面展现(二)(重制版)

    SQLite数据库 // 自定义类MyOpenHelper继承自SQLiteOpenHelper MyOpenHelper oh = new MyOpenHelper(getContext(), &q ...

  9. C++中利用数组对字符进行除重和排序

    题目:随机输入一组字符,对这组字符进行除重和排序输出, 例如:输入aafddbc 输出:abcdf 程序: #include "stdafx.h"#include<iostr ...

  10. Run Loop详解

    Run loops是线程的基础架构部分.一个run loop就是一个事件处理循环,用来不停的调配工作以及处理输入事件.使用run loop的目的是使你的线程在有工作的时候工作,没有的时候休眠. Run ...