码迷,mamicode.com
首页 > 编程语言 > 详细

java中接口的作用

时间:2015-03-02 16:54:14      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:

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

/*

 * 这是一只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 = newWaiter();//有一个店小二

                          CatPet cat = newCatPet(); //来了一只喵喵

                          DogPet dog = newDogPet(); //来了一只汪汪

                          PigPet pig = newPigPet(); //来了一只猪猪

                         

                          //交易开始了,店小二根据动物来判断要什么

                          waiter.sell(cat);//店小二抱起猫,瞧了瞧,哦,这是猫,它是要吃鱼的

                          waiter.sell(dog);//店小二抱起狗,瞧了瞧,哦,这是狗,它是要吃骨头的

                          waiter.sell(pig);//店小二抱起猪,瞧了瞧,哦,这是猪,它是要吃青菜的

             }

}

/*======================

 ********输出结果如下******

     你是猫咪,给你小鱼干

     你是旺财,给你骨头

     你是噜噜,给你青菜

 *

 *虽然可以完成交易,但是如果这时候有个小兔子来了,但是店小二不认识怎么办呢?那是不是还得去查呀?所以得修改店小二的方法,增加一个兔子方法。

 *而且如果有100个小动物,那是不是得要修改100次呢?由此可以看出,对象多了,店小二的工作压力好大呀。

 *======================

 * */

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

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

/*

 * 门口定了一项规定:大家要来买零食,必须得要说出来,也就是实现buy()方法。

 * */

public interfaceSpeakOut {

             public void Speak();

}

 

/*

 * 小狗看到了之后,知道新规定,于是实现该方法

 * */

public class DogPetimplements SpeakOut{

 

             @Override

             public void Speak() {

                          // TODO Auto-generatedmethod stub

                          System.out.println("我是一只狗,要买骨头!");

             }

}



/*

 * 小猫看到了之后,知道新规定,于是实现该方法

 * */

public class CatPetimplements SpeakOut{

 

             @Override

             public void Speak() {

                          // TODO Auto-generatedmethod 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 = newDogPet(); //实例化对象,来了一只狗顾客

//                        CatPet cat = newCatPet(); //实例化对象,来了一只猫顾客

 

                          //           两种实例化方法都行

                         

                          SpeakOut dog = newDogPet();  //实例化对象,来了一只狗顾客

                          SpeakOut cat = newCatPet();  //实例化对象,来了一只猫顾客

                         

                          Waiter waiter = newWaiter(); //实例化一个店小二

                          waiter.sell(cat); //店小二开始卖东西了,只负责抱起猫,猫自己会说要什么

                          waiter.sell(dog); //抱起狗,狗自己也会说要什么

             }

}

 

/*

 * =========================

 * 输出结果:

 * 我是一只猫,要买小鱼!

   我是一只狗,要买骨头!

 * java语言的特点就是面向对象,什么意思呢?故事里猫和狗都是对象,发挥对象的特征,例如故事里让猫和狗自己告诉店小二要什么,

 * 而不是由店小二根据小动物来判断,要给它卖什么,将这个操作交给了小动物们。

 * 所以如果小猪看到了,它只需要实现方法就可以来店里买了

 * 不是把所有的功能写在主函数或者调用函数中,这样店小二就轻松很多了

 * =========================

 **/

小猪急急忙忙跑过来,没有看到规定,那么能卖给它么?肯定不可以,要想买,可以呀,遵守规定,实现方法,自己说出来要什么。


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

 

java中接口的作用

标签:

原文地址:http://blog.csdn.net/mutoujian126/article/details/44019481

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!