Java接口

什么是接口

在很多地方都有“接口”这个术语 :
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);
		}
	}	
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值