實現介面5

2021-03-31 08:56:58 字數 1225 閱讀 1565

4、對映介面

對映,數學上表示一一對應的函式關係。介面對映的含義也是一樣,介面通過類來實現,那麼對於在介面中定義的每乙個成員,都應該對應著類的乙個成員來為它提供具體的實現。

類的成員及其所對映的介面成員之間必須滿足下列條件:

1、如果a和b都是成員方法,那麼a和b的名稱、型別、形參表(包括引數個數和每乙個引數的型別)都應該是一致的。

2、如果a和b都是屬性,那麼a和b的名稱、型別應當一致,而且a和b的訪問器也是類似的。但如果a不是顯式介面成員執行體,a允許增加自己的訪問器。

3、如果a和b都是時間那麼a和b的名稱、型別應當一致。

4、如果a和b都是索引指示器,那麼a和b的型別、形參表(包括引數個數和每乙個引數的型別)應當一致。而且a和b的訪問器也是類似的。但如果a不是顯式介面成員執行體,a允許增加自己的訪問器。

那麼,對於乙個介面成員,怎樣確定由哪乙個類的成員來實現呢?即乙個介面成員對映的是哪乙個類的成員?在這裡,我們敘述一下介面對映的過程。假設類c實現了乙個介面iinte***ce,member是介面iinte***ce中的乙個成員,在定位由誰來實現介面成員member,即member的對映過程是這樣的:

1、如果c中存在著乙個顯式介面成員執行體,該執行體與介面iinte***ce 及其成員member相對應,則由它來實現member 成員。

2、如果條件(1)不滿足,且c中存在著乙個非靜態的公有成員,該成員與介面成員member相對應,則由它來實現member 成員。

3、如果上述條件仍不滿足,則在類c定義的基類列表中尋找乙個c 的基類d,用d來代替c。

4、重複步驟1-- 3 ,遍歷c的所有直接基類和非直接基類,直到找到乙個滿足條件的類的成員。

5、如果仍然沒有找到,則報告錯誤。

下面是乙個呼叫基類方法來實現介面成員的例子。類class2 實現了介面inte***ce1,類class2 的基類class1 的成員也參與了介面的對映,也就是說類class2 在對介面inte***ce1進行實現時,使用了類class1提供的成員方法f來實現介面inte***ce1的成員方法f:

inte***ce inte***ce1

class class1

public void g( )

}class class2: class1, inte***ce1

}注意:介面的成員包括它自己定義的成員,而且包括該介面所有父介面定義的成員。在介面對映時,不僅要對介面定義體中顯式定義的所有成員進行對映,而且要對隱式地從父介面那裡繼承來的所有介面成員進行對映。

tp5實現資料介面

注 以下內容均已預設配置好資料庫連線且所有表都在同一資料庫中 資料介面 model層 資料介面檔案 namespace use think db class inface 根據表名分頁查詢100條資料 public function getonehundreddata page table 根據表名...

Thinkphp5的ajax介面實現

前一篇講到thinkphp5從資料庫獲取資料之後賦給檢視view,前一篇從資料渲染方式來說是服務端資料渲染,這一章則是瀏覽器端資料渲染。按照知識總結依據來劃分,這是兩種不同的技術場景。下面介紹具體的ajax介面實現 12 en 348 9101111111 test 1213 1430 3132 對...

Html5實現iPhone開機介面

今天我突發其想,想到可以用html5來仿照蘋果作業系統做乙個能在web平台執行的ios。當然,要開發出乙個作業系統,等我再歸山修練一百年再說吧。今天就先娛樂一下,先搞乙個開機介面。完工後的 由於lufylegend封裝得的確不錯,本次開發還是用該引擎做的。不多,感興趣的朋友可以直接看一下。index...