一概念介绍
1接口可以用于声明引用类型的变量,但接口不能用于创建实例。
2当使用接口来声明引用类型变量时,这个引用类型变量必须引用其实现类的对象。
3一个类可以实现一个或多个接口,实现接口用implements关键字。
4一个类实现了一个或多个接口之后,这个类必须完全实现这些接口里所定义的全部抽象方法,否则,该类将保留从父接口那里继承到的抽象方法,该类也必须定义为抽象类。
二实现接口的类应用
1代码示例
Output.java
public interface Output { // 接口里定义的成员变量只能是常量 int MAX_CACHE_LINE = 50; // 接口里定义的普通方法只能是public的抽象方法 void out(); void getData(String msg); // 在接口中定义默认方法,需要使用default修饰 default void print(String... msgs) { for (String msg : msgs) { System.out.println(msg); } } // 在接口中定义默认方法,需要使用default修饰 default void test() { System.out.println("默认的test()方法"); } // 在接口中定义类方法,需要使用static修饰 static String staticTest() { return "接口里的类方法"; } }
Printer.java
// 定义一个Product接口 interface Product { int getProduceTime(); } // 让Printer类实现Output和Product接口 public class Printer implements Output , Product { private String[] printData = new String[MAX_CACHE_LINE]; // 用以记录当前需打印的作业数 private int dataNum = 0; public void out() { // 只要还有作业,继续打印 while(dataNum > 0) { System.out.println("打印机打印:" + printData[0]); // 把作业队列整体前移一位,并将剩下的作业数减1 System.arraycopy(printData , 1 , printData, 0, --dataNum); } } public void getData(String msg) { if (dataNum >= MAX_CACHE_LINE) { System.out.println("输出队列已满,添加失败"); } else { // 把打印数据添加到队列里,已保存数据的数量加1。 printData[dataNum++] = msg; } } public int getProduceTime() { return 45; } public static void main(String[] args) { // 创建一个Printer对象,当成Output使用 Output o = new Printer(); o.getData("Linux"); o.getData("Java"); o.out(); o.getData("软件设计"); o.getData("信息安全"); o.out(); // 调用Output接口中定义的默认方法 o.print("林冲" , "武松" , "宋江"); o.test(); // 创建一个Printer对象,当成Product使用 Product p = new Printer(); System.out.println(p.getProduceTime()); // 所有接口类型的引用变量都可直接赋给Object类型的变量 Object obj = p; } }
2运行结果
F:\java\workspace\java6\src>java Printer
打印机打印:Linux
打印机打印:Java
打印机打印:软件设计
打印机打印:信息安全
林冲
武松
宋江
默认的test()方法
45
3结果分析
Printer类实现了Output接口和Product接口,因此Printer对象既可直接赋给Output变量,也可直接赋给Product变量。仿佛Printer类既是Output类的子类,也是Product类的子类,这就是Java提供的模拟多继承。
Printer实现了Output接口,即可获取Output接口中定义的print()和test()两个默认方法,因此Printer实例可以直接调用这两个默认方法。
相关推荐
工作流(WorkflowService)WebService接口使用说明文档详细阐述了如何在泛微E8和E9版本的Ecology8、Ecology9系统中进行接口开发。这些接口主要用于企业级的工作流管理,提供了一套完整的Web服务解决方案,使得不同...
RV1126_EVB_usb调试接口使用方法 RV1126_EVB_usb调试接口使用方法是RV1126开发板的一种调试接口,通过Micro USB接口连接到PC机,使用CH340G USB转串口芯片,支持Windows和Linux操作系统。 一、 物理接口 RV1126 ...
### 安车机动车检验监管系统接口使用手册V4.40(设备厂家)知识点: 1. **系统接口作用**:本文档是为汽车检测线开发提供的接口使用手册。它旨在指导开发者如何调用安车机动车检验监管系统的接口,以实现汽车检验数据...
在实际的`ConsoleApplication1`示例中,可能包含了展示接口使用的一个简单程序。这个程序可能会定义一个接口,如`ICalculator`,包含`Add(int a, int b)`和`Subtract(int a, int b)`等数学运算方法,然后创建一个`...
在Java中,接口使用`interface`关键字来定义。例如: ```java public interface MyInterface { void method1(); int method2(); } ``` 上述代码定义了一个名为`MyInterface`的接口,其中包含两个方法:无返回值...
《企业短信通二次开发接口使用说明书》是一份详细的技术文档,旨在指导理想集团的内部开发人员、市场销售人员,以及集团客户的相关开发人员和市场销售人员如何有效地利用企业短信通的二次开发接口。这份文档包含了从...
财付通接口使用文件是针对腾讯旗下支付平台——财付通的一种技术文档,它详尽地阐述了如何在各种业务场景下与财付通系统进行交互,以实现在线支付、退款、查询交易状态等功能。这份文件对于开发者来说是至关重要的,...
1. **文档(DocService)WebService接口使用说明** 这份文档详细介绍了泛微系统中关于文档管理的服务接口,包括文档的创建、读取、更新和删除等操作。开发者可以通过这些接口,实现与其他系统共享文档资源,进行...
泛微OA工作流WebService接口使用说明 泛微OA工作流WebService接口使用说明是泛微OA系统中的一部分,旨在提供一个统一的接口 для业务系统和协同系统之间的数据交互。该接口使用WebService技术,旨在提高业务系统...
php支付宝接口使用说明
大漠插件接口使用说明和开发说明书(2012年7月)暂时的最新版
微信支付接口使用
微信开发接口使用文档
淘宝API接口使用说明-用例子详细的解释淘宝API 的使用方法,对于想开发淘宝应用来说很有帮助。
flutter 学习案例,接口使用玩 Android 开放的 api,作为新手入门训练代码案例,耗时大概 4 个月【业余时间】,已经完成了基本的功能。努力打造一个体验好的 flutter 版本的玩 android 客户端!
中医舌诊接口使用示例项目源码,包含60个文件,全部采用Java语言编写,涉及多种文件类型如JPG图片、PNG图片、Git忽略文件、Markdown文档、XML配置文件等。该项目提供了中医舌诊接口的使用示例,旨在帮助开发者理解和...
微信公众平台消息接口使用指南
1、P2P全推行情接口只是针对P2P实时传输编程技术和股票行情数据高压缩技术的学术研究之用,接口所提供的行情数据仅供技术分析爱好者学习交流和盘后复盘使用,接收者不得将行情数据用于任何商业盈利性应用。...
外挂系统接口使用手册201408.pdf
本篇文章将深入探讨C#中的接口使用,包括接口的基本概念、接口的声明、实现以及接口在实际开发中的应用。 1. **接口的基本概念** - 接口(Interface)是一种完全抽象的类型,它只包含方法、属性、索引器和事件的...