国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

《CLR.via.C#第三版》第二部分第13章節 接口 讀書筆記(七)

2019-11-17 02:45:59
字體:
來源:轉載
供稿:網友

《CLR.via.C#第三版》第二部分第13章節 接口 讀書筆記(七)

2014-11-13 11:53 by hangwei, ... 閱讀, ... 評論, 收藏, 編輯

這章的書寫感覺很普通,是些基礎的認知知識。

其中一點的重要認知,泛型接口的好處(其實也是使用泛型的好處之一):編譯時類型安全&處理值類型時減少裝箱。

再說點書上沒有的。本來這些知識我打算另外分類在C#基礎里講的,這里先單獨表述下。

接口回調

其實我想不通為什么這本書不講一下接口回調這個概念,我可不會相信接口回調只在java中用到。

到現在為止,我突然發現,很多編程的基礎概念,于面向對象編程的語言來說,都是通用的,但是抱歉,在C#里(相關書籍)居然沒有!但我相信你翻閱Java書籍就有很大幾率看到這些概念的詳盡解釋。

還好我也學過Java。

直到現在,我鮮少在C#書籍中看到"接口回調"這一概念。這對于一開始就接觸C#的初學者來說,如果很多編程基礎概念不講,真的很難理解一些對象的行為。

我開始懷疑C#書籍的編寫者都是站在怎樣的高度。

接口回調也是多態的體現。

首先用一段代碼來示例接口回調:

接口IMyInterface1的代碼如下:

namespace CATest101{    interface IMyInterface1    {        void Method1();    }}

類MyClass1,實現接口IMyInterface1,代碼(省略命名空間)如下:

    public class MyClass1:IMyInterface1    {        public void Method1()        {            Console.WriteLine("MyClass1中的方法:Method1()");        }    }

Main方法中的代碼(接口回調):

        static void Main(string[] args)        {            MyClass1 my = new MyClass1();            IMyInterface1 i = my;//聲明接口類型指針指向MyClass1的實例對象             i.Method1();            Console.ReadLine();        }

輸出:

如上圖所示,接口變量i調用Method1方法,實際調用的是子類MyClass1中的Method1方法。

這就是接口回調。由接口回調會引出另一個類似概念:

向上轉型

向上轉型即是:父類引用指向子類對象,即類似Father f = new Child();的代碼表述形式。

現假定父類子類都有自己的myMethod方法,

調用f.myMethod();如果父類中myMethod是虛方法,那么調用的是子類的myMethod(子類必須使用override重寫的情況),如果父類的myMethod非虛方法,則f.myMethod將調用自己內部的myMethod方法。

設計模式中“簡單工廠模式”就是利用的向上轉型這個原理。

最后套用一句百科知識:

接口回調和向上轉型是設計模式的解耦核心,可以說幾乎所有的模式都是建立在這兩者的應用之上的。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 新绛县| 黑水县| 扶风县| 水富县| 化德县| 江永县| 东阳市| 会宁县| 乌兰察布市| 巴彦淖尔市| 寿阳县| 乐东| 郧西县| 兴国县| 定日县| 乐清市| 武定县| 乐陵市| 洛川县| 博爱县| 大方县| 丹凤县| 尉犁县| 玉屏| 大洼县| 营口市| 灵璧县| 万山特区| 清苑县| 大庆市| 泰顺县| 无极县| 平湖市| 乌拉特后旗| 沛县| 永善县| 互助| 芮城县| 武强县| 克什克腾旗| 祁阳县|