java中的接口interface
关于接口
接口描述了实现了它的类拥有什么功能。因为Java是强类型的,所以有些操作必须用接口去约束和标记。接口作为类的能力的证明,它表明了实现了接口的类能做什么。
类似与class,interface也是java中的一种引用类型。
接口中的成员
接口中的所有的成员,缺省情况下都是public的,也必须是public,无论是方法,还是字段。因为接口就是规定了API,如果实现的类不公开接口中的API,怎么能叫API呢?
一般情况下,接口中可以 定义方法 和 字段。
接口中的字段,必须(默认)为 public static final 。在定义的接口中必须初始化,因为是final。它们将成为类中的静态常量字段
接口中的方法,必须(默认)为 public abstract 。只需在接口中定义即可,不能实现(让实现了接口的类去实现)。将成为类中的public 实例方法 , 实现了接口的类必须实现接口中定义的方法。
定义一个接口
interface InterfaceName [extends interface1,interface2]
{
void foo(); void bar(); //...红色部分是 可选的 }
接口和类之间的implements关系
接口就是用来被实现implements 的 ,不然定义接口也就没意义了。Java中的类只能继承一个父类,但是可以实现多个接口。除了抽象类,普通类必须实现接口中定义的所有方法。
当一个类实现了某个接口后,接口可以看做是 是实现了接口的类 的 父类型。利用多态的特性,我们往往选择面向接口编程,而不是面向具体的类,这样可以让程序员关注API而不是内部实现,并提供更大的灵活性。
public class Test
{ public static void main(String[] args)
{ Workable[] workers = { new Teacher(),new Student()
}; fireWork(workers); } public static void fireWork(Workable[] workers)
{ for (int i = 0; i < workers.length; i++)
{
workers[i].doTask();
} } } interface Workable
{
void doTask();
} class Student implements Workable
{
@Override
public void doTask()
{
System.out.println("学生的工作是学习");
}
} class Teacher implements Workable
{
@Override
public void doTask()
{
System.out.println("老师的工作是教书");
}
}
每一个Teacher 、Student对象都是Workable对象,可以直接隐式转换。fireWork方法是面向接口编程的思想,传入的参数为Workable数组,那数组中的所有元素都可以执行
doTask方法(这正是接口约束带来的效果),而不管他们的具体类型。
抽象类与接口
java集合框架中的例子。抽象类不必实现接口中的方法,但是普通类一定强制实现接口中的所有方法。

接口和接口之间的extends关系
接口可以扩展extends 已经存在的接口,如果接口A扩展了接口B,则A将继承B中的所有成员,就像他们定义在A中一样。一个接口可以扩展多个接口。
interface Workable
{
void doTask();
} interface SchoolMember extends Workable
{
void sayHello();
}
这样,一个类如果要实现SchoolMember 接口,就必须实现 doTask 和 sayHello 2个方法,因为SchoolMember继承了doTask方法。
接口的总结
1、接口不能new出实例。但可以定义接口类型的变量,去引用实现了这个接口的类的对象。此时接口相当于实现类的父类。
2、接口中的方法不实现,而是用一个 分号 ; 代替函数体。
3、接口是Java中的一种引用类型。
java中的接口interface的更多相关文章
- java中List接口的实现类 ArrayList,LinkedList,Vector 的区别 list实现类源码分析
java面试中经常被问到list常用的类以及内部实现机制,平时开发也经常用到list集合类,因此做一个源码级别的分析和比较之间的差异. 首先看一下List接口的的继承关系: list接口继承Colle ...
- 第五节:详细讲解Java中的接口与继承
前言 大家好,给大家带来详细讲解Java中的接口与继承的概述,希望你们喜欢 什么是接口(interface) 接口中的方法都是抽象方法,public权限,全是抽象函数,不能生成对象 interface ...
- JavaSE入门学习20:Java面向对象之接口(interface)(一)
一Java接口 接口(英文:interface)是抽象方法和常量值的集合,在Java编程语言中是一个抽象类型,接口通常以interface来声 明.类是一种详细实现体.而接口定义了某一批类所须要遵守的 ...
- Java学习笔记二十八:Java中的接口
Java中的接口 一:Java的接口: 接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明.一个类通过继承接口的方式,从而来继承 ...
- JavaSE入门学习21:Java面向对象之接口(interface)(二)
一接口实现的多态 在上一篇博文:JavaSE入门学习20:Java面向对象之接口(interface)(一)中提到了接口的实现存在多态性,那么 这一篇主要就要分析接口实现的多态. 实例一 Test.j ...
- 转:Java中abstract和interface的区别
转自:Java中abstract和interface的区别 abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java ...
- JAVA中限制接口流量、并发的方法
JAVA中限制接口流量可以通过Guava的RateLimiter类或者JDK自带的Semaphore类来实现,两者有点类似,但是也有区别,要根据实际情况使用.简单来说, RateLimiter类是控制 ...
- java中map接口hashMap以及Enty之间的用法和关系
java中map接口hashMap以及Enty之间的转换 首先说的是map接口: Map提供了一种映射关系,其中的元素是以键值对(key-value)的形式存储的,能够实现根据key快速查找value ...
- Java 中的接口有什么作用?以及接口和其实现类的关系?
Java 中的接口有什么作用? - Ivony的回答 - 知乎 https://www.zhihu.com/question/20111251/answer/16585393 这是一个初学者非常常见的 ...
随机推荐
- effective OC2.0 52阅读笔记(六 块与大中枢派发)
派发队列:dispatch_queue 操作队列:NSOperationQueue 组:dispathc_group_t 37 理解“块”这一概念 总结:块就是一个值,且自有其相关类型.块的强大之处 ...
- java 深入技术三(List)
List ArrayList List接口 List接口的父接口-Collection List接口的重要子类- ArrayList -LikedList List接口不重要子类-Vector jav ...
- iOS 归档archive使用方法
归档是一种很常用的文件储存方法,几乎任何类型的对象都能够被归档储存,文件将被保存成自定 义类型的文件,相对于NSUserDefault具有更好的保密性. 1.使用archiveRootObject ...
- webstorm抽取函数
webstrom 1.extact 抽取函数:选中代码,右键,refactor-extact function matchPicLink() { var $match = $('#match'); v ...
- node03-events
目录:node01-创建服务器 node02-util node03-events node04-buffer node05-fs node06-path node07-http node08-exp ...
- MySQL通过增加用户实现远程连接数据库
命令行进入mysql.exe所在目录 mysql -uroot -padmin 例子: grant all privileges on *.* to joe@localhost identified ...
- mysql知识
1.Limit 在语句的最后,起到限制条目的作用 Limit [offset,] [N] offset:偏移量 N:取出条目 例子:select * from stu limit 3,3; 2.左连接 ...
- 【Java EE 学习 35 上】【strus2】【类型转换器】【struts2和Servlet API解耦】【国际化问题】【资源文件乱码问题已经解决】
一.类型转换器 1.在动作类action中,声明和表单中name属性的值同名的属性,提供get和set方法,struts2就可以通过反射机制,从页面中获取对应的内容 package com.kdyzm ...
- CF 337D 求圆交
题目链接:http://codeforces.com/problemset/problem/337/D 题意:就是一棵树上,有一些点被来自东方的神秘力量影响的,力量影响范围是d,为可能的力量源有几个. ...
- 网友分享 调用dll的语音朗读 不能变速,不好
调用 speeker.dll 这个文件被本人 放在文件里面,若有人需要可以 联系我 需要 mfc100ud.dll msvcr100d.dll 注:可以用D7 自带的ActiveX 里面的控件 ...