**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是一樣的結果。這是很常見的介...