接口使用
来源:互联网 发布:java wait join 编辑:程序博客网 时间:2024/06/05 13:22
一概念介绍
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]);// 把作业队列整体前移一位,并将剩下的作业数减1System.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实例可以直接调用这两个默认方法。
0 0
- 接口使用
- 接口与接口同时使用
- 使用接口排序(1)
- 使用接口排序(2)
- Comparable接口使用示例
- IDisposable接口的使用
- 关于何时使用接口
- Atlas使用接口
- java 接口的使用
- 使用C++的接口
- 为什么要使用接口
- 使用Comparator 接口 排序
- 使用继承?还是接口...
- 使用JavaCard RMI接口
- 接口的使用
- 为什么使用接口
- 使用接口的注意事项
- Map接口的使用。。。
- kermit的安装和配置
- 代理模式——红酒经销
- struct和typedef struct
- 依赖注入和控制反转
- 对Java关键字final和static的理解
- 接口使用
- Linux系统核心组成
- Xaml中使用Unicode字符
- 基于Qualcomm DSP算法集成系列一
- 备忘录模式——过关类游戏
- Linux的grep命令介绍
- 基于Qualcomm DSP算法集成系列二
- 怎样进行Xss攻击
- 命令模式——邮局发信