浏览以下内容前,请点击并阅读 声明

接口是java语言中的一个引用类型,和类一样,接口可以包含常量,方法签名,默认方法,静态方法和嵌套类型。含有方法主体的只有其中的默认方法和静态方法。接口不能被实例化,它们只能被类实现或者被其他接口继承。

接口的声明部分包含修饰词,关键词interface,接口名称,extends关键词+由逗号分隔开的继承接口名称(可有可无),和一个接口主体,如下例所示:

public interface GroupedInterface extends Interface1, Interface2, Interface3 {

    // 定义一个常量

    double E = 2.718282;

    // 方法签名
void doSomething (int i, double x);
int doSomethingElse(String s);
}

public修饰词表明该接口可以用在任何地方,没有该修饰词,则该接口仅在程序包内可见。

接口可以继承其他接口,和类的继承类似,不过接口可以继承多个接口,而类只能继承一个父类。

接口的主体由一对花括号和括号内的代码组成,接口主体中可以包含抽象方法,默认方法和静态方法,抽象方法只有方法签名,以分号结尾,默认方法以关键词default修饰,静态方法以关键词static修饰,接口中所有的方法可视范围隐含地为public,所以可以省略public修饰词。

除了上述三中方法意外,接口中还可包含常量声明,常量隐含的修饰词为public,static,final,可以省略,另外接口主体中还可包含嵌套类型。

实现接口

要定义一个实现某接口的类,就要在类的声明中包含implements短语,就是在继承类名称(没有继承的类则在需要声明的类名称之后)后接implements关键词+实现的接口名称,一个类可实现多个接口,由逗号隔开,类的主体中必须实现接口中定义的抽象方法,方法的签名要与接口中的一致,如下例所示:

//接口Relatable中有一个名为isLargerThan的抽象方法(声明为 public int isLargerThan(Relatable other);),
//所以要实现这个接口,类中必须提供该方法的实现
public class RectanglePlus implements Relatable {
public int isLargerThan(Relatable other) {
//...
}
  //省略其他方法声明...    
}

将接口视为引用类型

接口的名称可以用在任何可以使用其他数据类型名称的地方,如果定义一个变量的类型为某个接口,则赋值给该变量的对象类型必须是实现该接口的类。

//以下Intf是一个接口,而IntfImpl实现了该接口,可以将IntfImpl实例赋值给Intf类型的变量
Intf var=new IntfImpl()

接口的演变

一个接口一般不会是一成不变的,有时候会按照需求给接口添加一些新方法,如果是添加抽象方法的话,实现旧接口的类因为没有实现新添加的方法而将无法与新接口兼容,一个可行的解决方法就是将新添加的方法设置为默认方法,这样,就能使新接口与旧的类兼容,在接口中声明默认方法必须提供该方法的主体。此外,也可在接口中添加静态方法,这样,旧的类无需修改或者重新编译就可直接使用新添加的方法。

默认方法

默认方法的使用能够向接口添加新功能的同时又能保证与原有实现该接口类的兼容性。

默认方法的继承

当有一个接口继承一个含有默认方法的接口时,可以对接口中的默认方法作如下处理:

  • 不提及父接口的默认方法,这样该接口就继承了父接口的默认方法
  • 重新声明默认方法,将其变为抽象方法
  • 重新定义默认方法,即覆写

静态方法

在接口中定义静态方法,则其所有的实现类将继承该静态方法。

java基础-接口的更多相关文章

  1. Java 基础 接口和多态

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

  2. Java基础接口和抽象类区别(二)

    抽象类 在了解抽象类之前,先来了解一下抽象方法.抽象方法是一种特殊的方法:它只有声明,而没有具体的实现.抽象方法的声明格式为: 抽象方法必须用abstract关键字进行修饰.如果一个类含有抽象方法,则 ...

  3. Java基础-接口中国特色社会主义的体制中有这样的现象:地方省政府要坚持党的领导和按 照国务院的指示进行安全生产。请编写一个java应用程序描述上述的体制现象。 要求如下: (1)该应用程序中有一个“党中央”接口:CentralPartyCommittee,该接口中 有个“坚持党的领导”方法:void partyLeader() (2)该应用程序中有一个“国务院”抽象类:StateCouncil,

    36.中国特色社会主义的体制中有这样的现象:地方省政府要坚持党的领导和按 照国务院的指示进行安全生产.请编写一个java应用程序描述上述的体制现象. 要求如下: (1)该应用程序中有一个“党中央”接口 ...

  4. [Java 基础]接口

    抽象类和抽象方法 抽象方法 在面向对象编程语言中抽象方法指一些只有方法声明而没有具体方法体的方法抽象方法一般存在于抽象类或接口中. java中,抽象方法就是以 abstract 修饰的方法,只需要声明 ...

  5. java基础接口练习

    1.编写2个接口:InterfaceA和InterfaceB:在接口InterfaceA中有个方法voidprintCapitalLetter():在接口InterfaceB中有个方法void pri ...

  6. Java基础--接口和抽象类的区别

    任何不谈使用方法的空理论都是耍流氓 使用场景 · 如果你拥有一些方法并且想让它们中的一些有默认实现,那么使用抽象类吧(Java1.8中接口也可以这么做了) · 如果你想实现多重继承,那么你必须使用接口 ...

  7. java基础—接口概念

    一.接口的概念 JAVA是只支持单继承的,但现实之中存在多重继承这种现象,如“金丝猴是一种动物”,金丝猴从动物这个类继承,同时“金丝猴是一种值钱的东西”,金丝猴从“值钱的东西”这个类继承,同时“金丝猴 ...

  8. java基础——接口与抽象类的区别

    (1)首先接口和抽象类的设计目的就是不一样的.接口是对动作的抽象,而抽象类是对根源的抽象. (2)对于抽象类,一个类只能继承一个抽象类.但是一个类可以同时实现多个接口. (3)接口是公开的,里面不能有 ...

  9. Java基础——接口

    一:接口,英文称作interface,在软件工程中,接口泛指供别人调用的方法或者函数. 在封装与接口中,private关键字封装了对象的内部成员.经过封装,产品隐藏了内部细节,只提供给用户接口(int ...

随机推荐

  1. System类和Random类

    System类 成员方法: public static void gc():运行垃圾回收器 public static void exit(int status):退出垃圾回收器 public sta ...

  2. 在github上搭建hexo博客

    准备工作 安装git 系统是win10家庭版,采用git v1.9.5版本,比较简单,一路next直到finsh完成安装. 安装node.js hexo是基于node.js驱动的一款快速.简单且功能强 ...

  3. Hbase过滤器Filter的使用心得(爬坑经验)

    Hbase 的过滤器是个好东西.. 给这种非关系型数据库本来不能复杂查询的情况得到了很好的扩展..提供了很多的帮助.. 但是Filter的种类何其之多..让人眼花缭乱.. 譬如..分页类型的PageF ...

  4. [NHibernate]事务

    目录 写在前面 文档与系列文章 事务 增删改查 总结 写在前面 上篇文章介绍了nhibernate的增删改查方法及增加修改操作,这篇文章将介绍nhibernate的事务操作. SQL Server中的 ...

  5. Bash 是如何从环境变量中导入函数的

    在上文中曾说到: 所谓的环境变量的真实面目其实就是个任意字符串 Bash 在启动时会将 environ 数组中包含 = 号的字符串导入成为自己的变量 Bash 在启动外部命令时会将自己内部标记为环境变 ...

  6. NGUI 学习笔记

    1.NGUI中UI的深度关系(新版NGUI 3.9): 在同一个Panel中,不管同不同Altas,各个UI的顺序受Depth影响 在不同Panel中,UI的顺序受Panel的Depth影响 例如Pa ...

  7. maven项目常见问题

    问题1:Maven项目,右键-update project后报错如下的解决办法: 1).DescriptionResourcePathLocationType Java compiler level ...

  8. Mac Pro 软件安装/个性化配置 汇总

    苹果产品维修 一.Spotlight 搜索程序和文档 Spotlight是最最常用的东西, 类似Windows开始菜单中的搜索.  可以用来搜索文档,也可以搜索本机的程序, 这样可以快速启动. 点击右 ...

  9. 一条代码解决各种IE浏览器兼容性问题

    在网站开发中不免因为各种兼容问题苦恼,针对兼容问题,其实IE给出了解决方案Google也给出了解决方案百度也应用了这种方案去解决IE的兼容问题 百度源代码如下 <!Doctype html> ...

  10. linux mingling

    grep 文本搜索工具 -i 忽略大小写 -v 不显示匹配行 -c 显示符合条件的行数值 文本搜索支持正则表达式 1 2 3 cat /etc/passwd | grep root // 显示包含ro ...