java學習筆記之接口

1、接口

       面向對象的思想是將所有的事物都看作一個對象,對象的複雜性也導致了我們生活的多樣性,但多樣性之中含有共性。比如人有很多種,有學生、有老師、有醫生。但所有的人正常人都有他們的共性,比如會跑步,會說話,會思考。所以跑步、說話、思考可以是從特性中抽象出來得共性的東西。Java針對這一特性設計出了接口這樣一個概念。雖然每個正常的人都會說話、會跑步、會思考,但他們實現這些行爲的方式是不同的,有的人說話聲音大,內容有條理;有的人說話聲音小,但有感染力。無論是怎樣的方式他們都具有說話這樣的功能。因此有了多態的概念。我們可以說學生是一個正常的人,但不可以說人是學生。所以我們可以把學生這個對象賦值給人這個接口。一個學生可能是一個人,也可能是一個動物,所以他具有人和動物的共性。所以學生可以同時實現動物和人這兩個接口。Java不支持多繼承,所以通過實現多個接口,實現多繼承。

       接口是對java的抽象思想的進一步深化,在 《Thinking in java》一書中這樣描述接口“The interface keyword takes the concept of abstractness one step further”。接口是對類的進一步抽象,與抽象類不同。抽象類是將一個類中的一個或者幾個方法進行抽象,所抽象的方法僅有返回值和方法名,沒有具體實現。由於抽象類方法必須被實現,所以抽象類的抽象方法的訪問權限必須是public。而接口則是抽象類的進一步抽象,接口內所有的方法都沒有具體實現,僅有方法名稱和返回類型。類通過implements關鍵字類實現接口,接口的實現類必須實現接口內的所有方法,但經常會遇到實現一個接口但只想實現它其中的一個方法,這時可以採用適配器模式。一個實現類可以實現一個或者多個接口,這彌補了java單繼承的不足。實現類可以有自己的Field,自己的Method。

public interface Dog {

  void sayHello();

}

public class Jingba implements Dog{

  @Override

  public void sayHello() {

      System.out.println("I'm jingba");

     

  }

}

public class JinMao implements Dog {

  @Override

  public void sayHello() {

      System.out.println("I'm jinmao");

  }

 

}

public class TestInterface {

  public staticvoid main(String[] args){

      Dog dog1 = new Jingba();

      Dog dog2 = new JinMao();

      dog1.sayHello();//I’m jingba

      dog2.sayHello();//I’m jinmao

  }

}


2、接口的Field

接口是一個抽象的模板,模板是不能夠被改變的,接口的Field也只能被接口本身所擁有,所以接口的Field都是static和final,不能夠被修改且是接口所有的。在java se5之前,創建一組常量(constant)通常是採用接口方式完成,但在java se5以後通常是採用enum來定義常量組。

public interface Months {
    int SPRING = 1;
    int SUMMER = 2;
    int AUTUEM    = 3;
    int WINTER = 4;
}


3、接口實現中的衝突問題

由於java類可以實現多個接口,因此,如果接口中有共同的函數名,但參數類型、返回值類型不同,就會造成衝突。這種衝突應該避免。

4、防止接口被濫用

接口是一個很強大的工具,它可以幫助降低程序與程序之間的耦合性。但是並不是所有的類都需要有接口,是否需要提取出接口還要依據具體情況。

5、接口的繼承

一個接口可以繼承另一個接口並擁有另一個接口的抽象方法。

public interface animal {

    public void run();

}

public interface Dog extends animal{

    void sayHello();

}

Dog繼承了animal之後就擁有了animal的方法 run(),Dog的實現類也必須實現抽象方法run

 

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