java中接口的作用

话说小镇上开了一家宠物食品店,小动物们可以去买零食吃,大家都非常高兴,猫咪啊,狗狗啊,猪猪啊……都约好了一起去!

/*
 * 这是一只Dog类,由于门口没有写规范,它们不知道自己要说什么
* */
public class DogPet {

}

/*
 * 这是一只Cat类,由于门口没有写规范,它们也不知道自己要说什么
 * */
public class CatPet {

}

/*
 * 这是一只Pig类,由于没有规范,它们也不知道说什么
* */
public class PigPet {
	
}

/*
 * 店小二类,他主要工作是卖食品,怎么卖呢?嗯,仔细看看进来的是什么动物,然后再卖给它们零食
 * */
public class Waiter {
	//如果是猫,就卖小鱼
	public void sell(CatPet cat){
		System.out.println("你是猫咪,给你小鱼干");
	}
	
	//如果是狗,就卖骨头
	public void sell(DogPet dog){
		System.out.println("你是旺财,给你骨头");
	}
	//如果是猪猪,就卖青菜
	public void sell(PigPet pig){
		System.out.println("你是噜噜,给你青菜");
	}
}
/*
 * 如果镇上有100种小动物,那店小二得要学会辨认100次,而且要记住他们分别要买什么,好累哦……
 * */


/*
 * 动物们都来到商店,准备开始购物了
 * */
public class Shopping {
	public static void  main(String args[]){
		Waiter waiter = new Waiter();//有一个店小二
		CatPet cat = new CatPet(); //来了一只喵喵
		DogPet dog = new DogPet(); //来了一只汪汪
		PigPet pig = new PigPet(); //来了一只猪猪
		
		//交易开始了,店小二根据动物来判断要什么
		waiter.sell(cat);//店小二抱起猫,瞧了瞧,哦,这是猫,它是要吃鱼的
		waiter.sell(dog);//店小二抱起狗,瞧了瞧,哦,这是狗,它是要吃骨头的
		waiter.sell(pig);//店小二抱起猪,瞧了瞧,哦,这是猪,它是要吃青菜的
	}
}
/*======================
 ********输出结果如下******
     你是猫咪,给你小鱼干
     你是旺财,给你骨头
     你是噜噜,给你青菜
 *
 *虽然可以完成交易,但是如果这时候有个小兔子来了,但是店小二不认识怎么办呢?那是不是还得去查呀?所以得修改店小二的方法,增加一个兔子方法。
 *而且如果有100个小动物,那是不是得要修改100次呢?由此可以看出,对象多了,店小二的工作压力好大呀。
 *======================
 * */

-----------------------------------------------故事分割线------------------------------------------------

终于,小动物们越来越多,店小二越来越累,后来有一次卖错了,挨批评了,于是就不干了,老板着急啊,想了个办法,在门口竖了块牌子,写着:进点的小动物要自己说出要买什么吃的!不然不给卖!这就好比是一个接口,就是一种规范:规定了动物们必须按照它的要求去做,说出零食名称。至于说什么,那就是小动物们的事情咯……

/*
 * 门口定了一项规定:大家要来买零食,必须得要说出来,也就是实现buy()方法。
 * */
public interface SpeakOut {
	public void Speak();
}


/*
 * 小狗看到了之后,知道新规定,于是实现该方法
 * */
public class DogPet implements SpeakOut{

	@Override
	public void Speak() {
		// TODO Auto-generated method stub
		System.out.println("我是一只狗,要买骨头!");
	}
}

/*
 * 小猫看到了之后,知道新规定,于是实现该方法
 * */
public class CatPet implements SpeakOut{

	@Override
	public void Speak() {
		// TODO Auto-generated method stub
		System.out.println("我是一只猫,要买小鱼!");
	}

}

/*
 * 新来的店小二不知道他们要什么,但是没关系,动物们自己会说出来的。
 * 没有实现接口的当然就不能卖给它了,因为它不知道要什么,店小二也不知道卖什么。
 * */
public class Waiter {
	public void sell(SpeakOut pet){ //没有遵守该规定的就不卖,所以传进参数必须是规定。
		pet.Speak();
	}
}

/*
 * 猫和狗来商店了,开始进行交易了,可以卖给他们食品
 * */
public class Shopping {
	public static void main(String []args){
//		DogPet dog = new DogPet(); //实例化对象,来了一只狗顾客
//		CatPet cat = new CatPet(); //实例化对象,来了一只猫顾客

		//	两种实例化方法都行
		
		SpeakOut dog = new DogPet();  //实例化对象,来了一只狗顾客
		SpeakOut cat = new CatPet();  //实例化对象,来了一只猫顾客
		
		Waiter waiter = new Waiter(); //实例化一个店小二
		waiter.sell(cat); //店小二开始卖东西了,只负责抱起猫,猫自己会说要什么
		waiter.sell(dog); //抱起狗,狗自己也会说要什么
	}
}

/*
 * =========================
 * 输出结果:
 * 我是一只猫,要买小鱼!
   我是一只狗,要买骨头!
 * java语言的特点就是面向对象,什么意思呢?故事里猫和狗都是对象,发挥对象的特征,例如故事里让猫和狗自己告诉店小二要什么,
 * 而不是由店小二根据小动物来判断,要给它卖什么,将这个操作交给了小动物们。
 * 所以如果小猪看到了,它只需要实现方法就可以来店里买了
 * 不是把所有的功能写在主函数或者调用函数中,这样店小二就轻松很多了
 * =========================
 **/
小猪急急忙忙跑过来,没有看到规定,那么能卖给它么?肯定不可以,要想买,可以呀,遵守规定,实现方法,自己说出来要什么。

这就是对接口最通俗的解释,接口的作用就是统一规范,也就是让大家知道这个是做什么的,但是具体怎么做,不用知道,由实现者自己去做。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值