淺談Java Interface

      對於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);

}

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章