欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java接口

程序员文章站 2022-06-13 21:29:22
...

什么是接口

在很多地方都有“接口”这个术语 :
1、电脑上的音频接口、网络接口、USB接口、HDMI接口
2、API : Application Programming Interface
3、UI : User Interface
4、两个不同的公司合作时,要互相指定接口人

本质上:当一个系统与另一个系统对接时,需定义接口

接口定义

定义一个名为AudioOutput的接口

public interface AudioOutput
{
	//......
}

添加方法

添加名为play、stop的方法

public interface AudioOutput
{
	public void play(AudioData samples);
	public void stop();
}

规则:
1、不能写方法体
2、必须为public
3、不要添加属性(语法上可行,但没有意义)

使用接口

创建一个名为XiaoMi的类来实现AudioOutput接口

public class XiaoMi implements AudioOutput
{
	@Override
	public void play(AudioData samples)
	{
	}
	@Override
	public void stop()
	{
	}
}

接口与抽象类进行比较

接口与抽象类十分类似,区别在于:
1、用implements进行修饰,而不是extends,不表示继承关系
2、一个类可以implements多个接口

public class X extends Y implements A,B,C...
{
	//......
}

3、接口和继承是两个不同的设计概念

接口的使用示例

1、定义一个Computer
2、当Computer不连接音箱时,Computer也可以正常工作(只是听不到声音)
3、当Computer连接音箱时,声音数据交给音箱来播放出来。
4、可以连接不同的音箱。

//Test.java 主方法的所在,程序运行的起点
package my;
public class Test
{
	public static void main(String[] args)
	{
		Computer c = new Computer();//模拟一个电脑
		
//		XiaoMi xiaomi = new XiaoMi();
//		c.setAudioOutput(xiaomi);//电脑连接小米音箱

		Edifier e = new Edifier();
		c.setAudioOutput(e);//电脑连接漫步者音箱
		
		c.playMovie("d:/test.mp4");
	}
}
//AudioData.java (模拟)音频数据类
package my;
public class AudioData
{
}
//AudioOutput.java 音频接口
package my;
public interface AudioOutput
{
	public void play (AudioData samples);
	public void stop();
}
//XiaoMi.java 小米音箱类
package my;
public class XiaoMi implements AudioOutput
{
	@Override
	public void play(AudioData samples)
	{
		System.out.println("XiaoMi: di di di di ...");		
	}
	@Override
	public void stop()
	{			
	}
}
//Edifier.java 漫步者音箱类
package my;
public class Edifier implements AudioOutput
{
	@Override
	public void play(AudioData samples)
	{		
		System.out.println("漫步者: dadadada..");
	}
	@Override
	public void stop()
	{	
	}
}
//Computer.java 电脑类
package my;
public class Computer
{
	// 音频播放接口
	AudioOutput  audioOutput;
	public Computer()
	{		
	}
	// 连接输出设备
	public void setAudioOutput(AudioOutput ao)
	{		
		this.audioOutput  = ao;
	}
	// 播放视频文件
	public void playMovie(String file)
	{
		AudioData samples = new AudioData();
		// 如果有输出设备, 则把声音数据交给设备播放
		if(audioOutput != null)
		{
			audioOutput.play(samples);
		}
	}	
}