facebook廣告





123

2016年9月16日 星期五

Android Interface的使用


Android應用程序採用Java語言編寫,Java語法和C/C++有很大的相似性,但也有一些特別之處。Android中Interface的使用,從名字上看,Interface即為接口的意思,多用於實現回調(Call Back)方法。在Interface的定義中,一般的代碼架構如代碼清單1-1所示。
代碼清單1-1 InterfaceServer.java
公共類InterfaceServer {
      公共接口OnClickListener {
        公共無效的onClick();
      }
      私人OnClickListener mOnClickListener = NULL;
      公共無效的onClick(){
        如果(mOnClickListener!= NULL)
        mOnClickListener.onClick();
      }
      公共無效setOnClickListener(OnClickListener L){
        mOnClickListener = 1;
      }
    }
對於Interface內部的方法而言,只需要聲明,而不需要具體實現。從編譯器的角度來看,Interface會被認為是一個指向方法的指針。
使用InterfaceServer的代碼一般如代碼清單1-2所示。
代碼清單1-2 使用InterfaceServer
公共無效addToButton {
      鍵b =(按鈕)findViewById(R.id.button);
      onClickListener L =新OnClickListener(){
        公共無效的onClick(視圖v){
          TextView的TV1 =(的TextView)findViewById(R.id.tv1);
          tv1.setText(以下簡稱“按鈕被點擊”);
        }
      };
      b.setOnClickListener(L);
    }
Interface和Class的區別?
Interface接口:可以理解成一種特殊的類,由常量和抽象方法組成的特殊類;接口不可以實例化;接口中的方法沒有方法體;繼承接口的類一定要實現接口中定義的方法。
Class類:可以實例化;可以定義自己的字段,屬性,方法等;類可以實現多個接口,但只能繼承一個類。
"interface"(接口)關鍵字使抽象的概念更深入了一層。我們可將其想像為一個"純"抽像類。它允許創建者規定一個類的基本形式:方法名、自變量列表以及返回類型,但不規定方法主體。接口也包含了基本數據類型的數據成員,但它們都默認為static和final。接口只提供一種形式,並不提供實施的細節。
接口這樣描述自己:"對於實現我的所有類,看起來都應該像我現在這個樣子"。因此,採用了一個特定接口的所有代碼都知道對於那個接口可能會調用什麼方法。這便是接口的全部含義。所以我們常把接口用於建立類和類之間的一個"協議"。有些面向對象的程序設計語言採用了一個名為"protocol"(協議)的關鍵字,它做的便是與接口相同的事情。
為創建一個接口,請使用interface關鍵字,而不要用class。與類相似,我們可在interface關鍵字的前面增加一個public關鍵字(但只有接口定義於同名的一個文件內);或者將其省略,營造一種"友好的"狀態。
為了生成與一個特定的接口(或一組接口)相符的類,要使用implements(實現)關鍵字。我們要表達的意思是"接口看起來就像那個樣子,這兒是它具體的工作細節"。除這些之外,我們其他的工作都與繼承極為相似。

沒有留言:

張貼留言