万金流
初次使用博客园,目前感觉还不错。 不知不觉用了4年零4个月了,越来越喜欢博客园。

此例演示java中接口的一般用法。

屋子里有一群程序员,每个人在写着自己的类,共同构建一个世界。

项目经理突然出现:“打扰大家一下,公司决定举办一个竞速比赛,你们写的类都可以参加。为了比赛的顺利进行,大家的类都必须要实现一个速度接口和一个保养接口。速度接口要完成启动、提速、刹车三个动作;保养接口要完成加油、换胎两个动作,具体内容见接口文件,请吃饱了没事干的程序员主动携你们的类报名参加!”

速度接口如下:

public interface SuDu
{
	String start();
	String rise_Speed();
	String stop();
}

  

保养接口如下:

public interface BaoYang
{
	String add_Oil();
	String feet();
}

  

最终,有两个类报名参加,它们分别是:汽车类(car)和乌龟类(Oogway)

它们继承了项目经理要求的接口,并对接口进行了实现。代码如下:

汽车类:

public class Car implements BaoYang,SuDu
{
	public String start()
	{
		return "汽车现在开始启动了,轮胎在地面上磨起了阵阵黑烟,遮天蔽日。\n";
	}
	public String rise_Speed()
	{
		return "只见驾驶员咔咔换档,汽车速度很快升到了200KM/H,而且还在增加~!!\n";
	}
	
	public String stop()
	{
		return "只听\"吱~~\"的一声,汽车险险停住,差点冲出跑道,压死一只蚂蚁。\n";
	}
	public String add_Oil()
	{
		return "汽车换胎的时候,静静地停在这里,什么也不想,油箱里灌注着我需要的血液……人生就应该这样\n";
	}
	public String feet()
	{
		return "工程师换完轮胎,我又可以蹦蹦跳跳冲上公路了!\n";
	}
}

  

乌龟类:

public class Oogway implements BaoYang,SuDu
{
	public String start()
	{
		return "乌龟现在开始启动了,只见它爪子用力地刨啊刨,可咋就不动地方呢?\n";
	}

	public String rise_Speed()
	{
		return "乌龟变身为忍者神龟,它开始两条腿向前冲了~\n";
	}

	public String stop()
	{
		return "只见乌龟全身缩进龟壳,\"吱~~\"的一声,龟壳和地面摩擦,擦出阵阵火星!\n";
	}

	public String add_Oil()
	{
		return "本龟四脚朝天,喝着新鲜的露珠,心里想着:能来份兔子肉就完美了~\n";
	}

	public String feet()
	{
		return "剪剪龟指甲,再图个紫色的指甲油,今天一定要跑出新的世界纪录!\n";
	}
}

  

因为直接实现了接口,项目经理就不用对它们进行严格的检查了。

竞速大赛如期举行,因为报名参加的只有两个类,项目经理直接完成了主程序(它甚至都没仔细看下这两个类,因为不需要)

主程序如下:

public class c1
{
	public static void main(String[] args)
	{
		// TODO Auto-generated method stub
		System.out.println("台上十分钟,请看:\n");
		System.out.println(race());
		System.out.println("-----------------------\n");
		System.out.println("台下十年功,请看:\n");
		System.out.println(rest());
	}
	public static String race()
	{
		SuDu s1,s2;
		String result="";
		s1=new Car();
		s2=new Oogway();
		result+=s1.start();
		result+=s2.start();
		result+=s1.rise_Speed();
		result+=s2.rise_Speed();
		result+=s1.stop();
		result+=s2.stop();
		return result;
	}
	public static String rest()
	{
		BaoYang s1,s2;
		String result="";
		s1=new Car();
		s2=new Oogway();
		result+=s1.add_Oil();
		result+=s2.add_Oil();
		result+=s1.feet();
		result+=s2.feet();
		return result;
	}
}

  

程序执行结果……自己分析以后运行一下吧。。。

题外话:这里的race和rest方法,代码都很依赖具体的接口实现类。可以通过设置注入点的方式,让代码松耦合,更加通用。这也是控制反转(IoC)思想,以后有机会再聊。

posted on 2019-06-11 12:00  万金流  阅读(326)  评论(0编辑  收藏  举报