C 介面的隱式與顯示實現

2021-08-02 22:47:45 字數 1043 閱讀 7863

**c# 介面的隱式與顯示實現

通俗的來講,「顯示介面實現」就是使用介面名稱作為方法名的字首;而傳統的實現方式稱之為:「隱式介面實現」。費話不說,例子如下:

inte***ce ianimal

class animal:ianimal

}定義了乙個ianimal介面,一般我們都會這麼呼叫:

//通過類呼叫

animal animal = new animal();

animal.dog();

//或者通過介面呼叫

ianimal animal = new animal();

animal.dog();

類和介面都能呼叫到,事實上這就是「隱式介面實現」。

那麼「顯示介面實現」是神馬模樣呢?

inte***ce ianimal

class animal:ianimal

}//只能通過介面呼叫

ianimal animal = new animal();

animal.dog();

用類的方法去實現時會報錯,不允許,「顯示介面實現」只允許介面實現。如果真想用類來實現呢,那必須要進行一下強制型別轉換。

//強制型別轉換後即可

animal animal = new animal();

(animal as ianimal).dog();

既然顯示介面實現這麼不給力,為什麼還要存在了,凡事存在即合理。在實際專案中,有時某個類往往會繼承多個介面,而介面中往往會有一些相同名稱、引數與型別的值。通過顯式介面實現可以為避免一些不必要的歧義(我在專案中碰到的不多,可能是因為專案太小的原因吧)。

顯示介面實現與隱式介面實現的適應場景

當類實現乙個介面時,通常使用隱式介面實現,這樣可以方便的訪問介面方法和類自身具有的方法和屬性。

當類實現多個介面時,並且介面中包含相同的方法簽名,此時使用顯式介面實現。即使沒有相同的方法簽名,仍推薦使用顯式介面,因為可以標識出哪個方法屬於哪個介面。

隱式介面實現,類和介面都可訪問介面中方法。顯式介面實現,只能通過介面訪問。

C 介面的隱式與顯示實現

隱式實現的話實現的方法屬於實現的類的,可以直接通過類的物件訪問,顯式實現的話方法是屬於介面的,可以看成是寄託在類中實現的,訪問這些方法時要先把物件轉換成介面物件,然後通過介面物件呼叫一般來講顯式實現用得比較少,但是在實現具有相同名稱和簽名的兩個介面方法時就必須用到了。在實際專案中,有時某個類往往會繼...

介面的顯式實現與隱式實現

我們在實現介面時,常常是類繼承介面,然後在介面中實現相應的方法。如下 inte ce ioutput class output ioutput 使用 測試一下實現的結果 可以看到繼承介面的類s的輸出s.output和介面i的輸出i.output是一樣的結果。這是很常見的介面實現方式。那如果我們這樣實...

介面的顯式實現與隱式實現

我們在實現介面時,常常是類繼承介面,然後在介面中實現相應的方法。如下 inte ce ioutput class output ioutput class program 使用 測試一下實現的結果 可以看到繼承介面的類s的輸出s.output和介面i的輸出i.output是一樣的結果。這是很常見的介...