接口使用_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > 接口使用

接口使用

 2016/10/30 5:33:59  cakin24  程序员俱乐部  我要评论(0)
  • 摘要:一概念介绍1接口可以用于声明引用类型的变量,但接口不能用于创建实例。2当使用接口来声明引用类型变量时,这个引用类型变量必须引用其实现类的对象。3一个类可以实现一个或多个接口,实现接口用implements关键字。4一个类实现了一个或多个接口之后,这个类必须完全实现这些接口里所定义的全部抽象方法,否则,该类将保留从父接口那里继承到的抽象方法,该类也必须定义为抽象类。二实现接口的类应用1代码示例Output.javapublicinterfaceOutput
  • 标签:使用 接口

一概念介绍

1接口可以用于声明引用类型的变量,但接口不能用于创建实例。

2当使用接口来声明引用类型变量时,这个引用类型变量必须引用其实现类的对象。

3一个类可以实现一个或多个接口,实现接口用implements关键字

4一个类实现了一个或多个接口之后,这个类必须完全实现这些接口里所定义的全部抽象方法,否则,该类将保留从父接口那里继承到的抽象方法,该类也必须定义为抽象类。

?

二实现接口的类应用

1代码示例

Output.java

class="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实例可以直接调用这两个默认方法。

发表评论
用户名: 匿名