java中接口的作用

来源:互联网 发布:slam算法介绍 编辑:程序博客网 时间:2024/04/28 21:34

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

/* * 这是一只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{@Overridepublic void Speak() {// TODO Auto-generated method stubSystem.out.println("我是一只狗,要买骨头!");}}

/* * 小猫看到了之后,知道新规定,于是实现该方法 * */public class CatPet implements SpeakOut{@Overridepublic void Speak() {// TODO Auto-generated method stubSystem.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语言的特点就是面向对象,什么意思呢?故事里猫和狗都是对象,发挥对象的特征,例如故事里让猫和狗自己告诉店小二要什么, * 而不是由店小二根据小动物来判断,要给它卖什么,将这个操作交给了小动物们。 * 所以如果小猪看到了,它只需要实现方法就可以来店里买了 * 不是把所有的功能写在主函数或者调用函数中,这样店小二就轻松很多了 * ========================= **/
小猪急急忙忙跑过来,没有看到规定,那么能卖给它么?肯定不可以,要想买,可以呀,遵守规定,实现方法,自己说出来要什么。

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

0 0
原创粉丝点击