浅谈Java Interface

来源:互联网 发布:苹果app下载不了软件 编辑:程序博客网 时间:2024/04/29 21:41

      对于Java初学者来说,可能会有这样一个疑惑----我们定义了一个接口,但是我们在实现这个接口的类中,还要实现接口中的所有方法,那还不如直接就在这个类中写实现方法,岂不更便捷,还省去定义接口麻烦?那么接口在Java中的作用到底是什么呢?

      1、定义

           接口是由一组相关的空方法构成的。

      2、作用

         接口是个规范。因为它可能要被多个类去实现,程序怎么知道他们是有关联的呢?既然不是一个类去实现,那么是有很多地方有用到,大家需要统一标准。甚至有的编程语言(Object-)已经不把接口叫interface,直接叫protocol。

        统一标准的目的,是大家都知道这个是做什么的,但不需要知道具体怎么做。比如,Comparable找个接口是用来比较两个对象的,那么如何比较呢?

        数字有数字的比较方法,字符串有字符串的比较方法,学生(自己定义的类)也有自己的比较方法。

       软件开发中一个很重要的一个理念就是“解耦”,接口和接口实现就是在干这件事,定好规范,任你实现,效率可高,可低,实现内容也可随时间变化而变化,但是调用关系是不变的。

    3、优点:

       (1)程序是可拓展的。你在修改你具体的实现类的时候,不需要去修改调用它的类;这个呢,是java编程时候强调的“对拓展开放,对修改关闭”原则。当然这也是java多态性的体现。

       (2)就是java通过Interface实现多继承。继承的一个好处就是代码的复用,减少代码错误。

    4、生活实例

  (1)假如我开了一个宠物粮店,声明所有宠物都可以来我这里买粮食,这就相当于一个接口。

      public interface PetRestaurant{ 

                    public void buy();

             }

       当一只狗看到了,知道自己是宠物,所以它去实现这个接口

     public class DogPet implements PetRestaurant{

          @Override

          public void buy(){

            System.out.println("我是狗,我要买狗粮");

           }

}

当一只猫看到了,知道自己是宠物,所以它去实现这个接口

     public class CatPet implements PetRestaurant{

          @Override

          public void buy(){

            System.out.println("我是猫,我要买猫粮");

           }

}

当狗和猫来我的店之前,我是不知道他们到底是什么,但是当他们来到我的店,我就知道一个要猫粮,一个要狗粮。因为他们都实现了我这个接口,都可以买。

下面这个类相当于一个接待顾客的类,即店小二,他接待所有实现了我这个宠物店接口的动物,传进来一个PetRestaurant类型的宠物,注意,这个PetRestaurant是接口

public class test{

            public  void buy(PetRestautrant pet){

                        pet.buy();

              }

}

好了,这个时候我这个老板出现了,我可以给他们卖粮食了,相当于测试类

public class Tests{

public static void  main(String[] args){

  test t=new test();

   PetRestaurant dog=new DogPet();

  PetRestaurant cat=new CatPet();

  t.buy(dog);

  t.buy(cat);

}

}

0 0