一、定义(类之上的公共标准)

一个特殊的类,用interface关键字来表示。只有全局变量和抽象方法。解决Java中子类只能单继承的问题

【语法】 [访问修饰符:public 或 default]   [ 接口名字:和类名形似 ]   ( extends  [ 父接口1,父接口2.。。] )

{

常量定义;

抽象方法;

}

即:

1. 访问修饰符:只能是public或默认       2. 接口名:和类名采用相同命名机制。    3. extends:接口可以多继承。

4. 常量:接口中的属性只能是常量,总是:public static final 修饰。不写也是。

5. 方法:接口中的方法只能是:public abstract。 省略的话,也是public abstract。

【注】

1. 子类通过implements来实现接口中的规范。        2. 接口不能创建实例,但是可用于声明引用变量类型。

3. 一个类实现了接口,必须实现接口中所有的方法,并且这些方法只能是public的。

4. JDK1.7之前,接口中只能包含静态常量、抽象方法,不能有普通属性、构造方法、普通方法。

5. JDK1.8后,接口中包含普通的静态方法。

【示例】

【代码示例】

  1. //接口:一个特殊的类 关键字 定义接口interface 和 实施接口 implement
  2. //飞行接口
  3. interface Volant {
  4. int FLY_HIGHT = 100; // 总是:public static final类型的;
  5. void fly(); //总是:public abstract void fly();
  6. }
  7. /**善良接口*/
  8. interface Honest {
  9. void helpOther();
  10. }
  11.  
  12. /**Angle类实现飞行接口和善良接口*/
  13. class Angel implements Volant, Honest{ //天使类继承(这里用关键字 implement:实施实现)2个接口,重写2个接口中的抽象方法
  14. public void fly() {
  15. System.out.println("天使在飞行");
  16. }
  17. public void helpOther() {
  18. System.out.println("扶老奶奶过马路!");
  19. }
  20. }
  21.  
  22. //好人类只继承善良的接口
  23. class GoodMan implements Honest {
  24. public void helpOther() {
  25. System.out.println("我是一个好人");
  26. }
  27. }
  28.  
  29. class BirdMan implements Volant {
  30. public void fly() {
  31. System.out.println("我是鸟人,正在飞!");
  32. }
  33. }
  34.  
  35. public class Test_1205_01
  36. {
  37. public static void main(String[] args)
  38. {
  39. Volant volant = new Angel(); //接口Volant 不能创建实例,但是可用于声明引用变量类型(Volant volant) 。
  40. volant.fly();
  41. System.out.println(Volant.FLY_HIGHT); //输出常量接口中的常量
  42.  
  43. Honest honest = new GoodMan();
  44. honest.helpOther(); //输出 GoodMan类的动作
  45. }
  46. }

[18/12/05]接口(interface)的更多相关文章

  1. php中的抽象类(abstract class)和接口(interface)

    一. 抽象类abstract class 1 .抽象类是指在 class 前加了 abstract 关键字且存在抽象方法(在类方法 function 关键字前加了 abstract 关键字)的类. 2 ...

  2. 《连载 | 物联网框架ServerSuperIO教程》- 12.服务接口的开发,以及与云端双向交互

    1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...

  3. Go语言学习笔记(四)结构体struct & 接口Interface & 反射

    加 Golang学习 QQ群共同学习进步成家立业工作 ^-^ 群号:96933959 结构体struct struct 用来自定义复杂数据结构,可以包含多个字段(属性),可以嵌套: go中的struc ...

  4. Go语言学习笔记(四)结构体struct & 接口Interface & 反射reflect

    加 Golang学习 QQ群共同学习进步成家立业工作 ^-^ 群号:96933959 结构体struct struct 用来自定义复杂数据结构,可以包含多个字段(属性),可以嵌套: go中的struc ...

  5. JavaSE入门学习21:Java面向对象之接口(interface)(二)

    一接口实现的多态 在上一篇博文:JavaSE入门学习20:Java面向对象之接口(interface)(一)中提到了接口的实现存在多态性,那么 这一篇主要就要分析接口实现的多态. 实例一 Test.j ...

  6. go面向对象之多态即接口(interface)

    Go 语言接口 Go 语言提供了另外一种数据类型即接口,它把所有的具有共性的方法定义在一起,任何其他类型只要实现了这些方法就是实现了这个接口. 实例 /* 定义接口 */ type interface ...

  7. typescript接口---interface

    假如我现在需要批量生产一批对象,这些对象有相同的属性,并且对应属性值的数据类型一致.该怎么去做? 在ts中,因为要检验数据类型,所以必须对每个变量进行规范,自然也提供了一种批量规范的功能.这个功能就是 ...

  8. java中的接口interface

    关于接口 接口描述了实现了它的类拥有什么功能.因为Java是强类型的,所以有些操作必须用接口去约束和标记.接口作为类的能力的证明,它表明了实现了接口的类能做什么. 类似与class,interface ...

  9. 14 接口-interface的定义与实现

    接口的基本语法一: 1.使用interface 定义 2.接口当中的方法都是抽象方法 3.接口当中的方法都是public权限 接口的定义: interface USB { public void re ...

随机推荐

  1. SpringFox

    简介     http://projects.spring.io/spring-framework null

  2. keepalived heartbeat lvs haproxy

    一, keeplived @ 01,keeplived 是什么? Keepalived起初是为LVS设计的,专门用来监控集群系统中各个服务节点的状态,它根据TCP/IP参考模型的第三.第四层.第五层交 ...

  3. 05-ognl基本语法

    1 基本取值 @Test //1基础语法演示-基本取值 //取出root中的属性值 public void fun2() throws Exception{ //1 准备OGNLcontext Ogn ...

  4. BNU 28887——A Simple Tree Problem——————【将多子树转化成线段树+区间更新】

    A Simple Tree Problem Time Limit: 3000ms Memory Limit: 65536KB This problem will be judged on ZJU. O ...

  5. sp_addlinkedserver创建远程服务器查询

    远程服务器查询可以分两步完成: 1.建立连接服务器 exec sp_addlinkedserver @server='Test_Server', --被访问的服务器别名 @srvproduct='', ...

  6. artDialog组件应用学习(一)

    个人觉得artDialog是一组很不错的对话框组件.写的是artDialog_v6应用. 官方称其兼容性测试通过:IE6~IE11.Chrome.Firefox.Safari.Opera. 官网:ht ...

  7. 转载:.NET Memory Leak: XmlSerializing your way to a Memory Leak

    原文地址:http://blogs.msdn.com/b/tess/archive/2006/02/15/532804.aspx I hate to give away the resolution ...

  8. !function()是干什么的?

    叹号后面跟函数!function和加号后面跟函数+function都是跟(function(){})();这个函数是一个意思,都是告诉浏览器自动运行这个匿名函数的,因为!+()这些符号的运算符是最高的 ...

  9. vim 安装vundle 之curl

    百度出来的博客文章,配置curl.cmd 的内容win7 x64 好像有误 贴下正确的 @rem Do not use "echo off" to not affect any c ...

  10. ASP.NET MVC 音乐商店 - 5 通过支架创建编辑表单 续

    查看 StoreManager 控制器的代码 现在,Store Manager 控制器中已经包含了一定数量的代码,我们从头到尾重新过一下. 首先,在控制器中包含了标准的 MVC 控制器的代码,为了使用 ...