日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

接口两种实现方式

發布時間:2023/11/27 生活经验 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 接口两种实现方式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

   以前在用到接口時,從來沒注意到接口分為隱式實現與顯示實現。昨天在瀏覽博客時看到相關內容,現在根據自己的理解記錄一下,方便日后碰到的時候溫習溫習。

   ?通俗的來講,“顯示接口實現”就是使用接口名稱作為方法名的前綴;而傳統的實現方式稱之為:“隱式接口實現”。費話不說,例子如下:

   ? ? ?interface IAnimal     {        void Dog();     }     class Animal:IAnimal     {       public void Dog()       {         Console.WriteLine("dog...");       }      }

  定義了一個IAnimal接口,一般我們都會這么調用:

    //通過類調用

    Animal animal = new Animal();     animal.Dog();

    //或者通過接口調用

    IAnimal animal = new Animal();

    animal.Dog();

  類和接口都能調用到,事實上這就是“隱式接口實現”。

  那么“顯示接口實現”是神馬模樣呢?

  interface IAnimal   {     void Dog();   }   class Animal:IAnimal   {     void IAnimal.Dog()     {       Console.WriteLine("dog...");     }   }

    //只能通過接口調用

    IAnimal animal = new Animal();

    animal.Dog();

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

    //強制類型轉換后即可

    Animal animal = new Animal();     (animal as IAnimal).Dog();

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

  顯示接口實現與隱式接口實現的適應場景

  1. 當類實現一個接口時,通常使用隱式接口實現,這樣可以方便的訪問接口方法和類自身具有的方法和屬性。
  2. 當類實現多個接口時,并且接口中包含相同的方法簽名,此時使用顯式接口實現。即使沒有相同的方法簽名,仍推薦使用顯式接口,因為可以標識出哪個方法屬于哪個接口。
  3. 隱式接口實現,類和接口都可訪問接口中方法。顯式接口實現,只能通過接口訪問。

轉載于:https://www.cnblogs.com/xietianjiao/p/5198789.html

總結

以上是生活随笔為你收集整理的接口两种实现方式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。