C# 實(shí)例化接口對(duì)象的方法
在head first 設(shè)計(jì)模式中 用到了很多很多接口對(duì)象
首先澄清一個(gè)問(wèn)題,就是接口不僅可以聲明對(duì)象,而且可以把對(duì)象實(shí)例化,還可以當(dāng)做參數(shù)被傳入。
一、接口回調(diào)
這就是繼承中的向上轉(zhuǎn)型。父類 FL=new 子類();只不過(guò)這里的父類就是interface接口。(個(gè)人認(rèn)為這里不管是class的override還是interface的重寫,都是一樣的用法)
可以把實(shí)現(xiàn)某一接口類創(chuàng)建的對(duì)象的引用賦給該接口聲明的接口變量,那么該 接口變量就可以調(diào)用被類實(shí)現(xiàn)的接口中的方法。實(shí)際上,當(dāng)接口變量調(diào)用被類實(shí)現(xiàn)的接口中的方法時(shí),就是通知相應(yīng)的對(duì)象調(diào)用接口方法
直接上代碼
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { interface Itemp { double plus(); } public class num : Itemp { double aa, bb; public num(double a, double b) { this.bb = b; this.aa = a; } public double plus() { return (aa * bb); } } class Program { static void Main(string[] args) { num n = null;//聲明類對(duì)象引用 Itemp tm = null;//聲明接口對(duì)象引用 tm = new num(1.1, 2.2);//接口回調(diào)(向上轉(zhuǎn)型) Console.WriteLine(tm.plus()); Console.ReadKey(); } } }
通過(guò)上面的例子,我們不難看出,接口對(duì)象的實(shí)例化實(shí)際上是一個(gè)接口對(duì)象作為一個(gè)引用,指向?qū)崿F(xiàn)了它方法的那個(gè)類中的所有方法,這一點(diǎn)非常象C++中的函數(shù)指針(在C#中類似委托),但是卻是有區(qū)別的。C#中的接口對(duì)象實(shí)例化實(shí)際上是一對(duì)多的,而C++中的函數(shù)指針是一對(duì)一的。
但是需要注意的是,接口對(duì)象的實(shí)例化必須用實(shí)現(xiàn)它的類來(lái)實(shí)例化,而不能用接口本身實(shí)例化。用接口本身實(shí)例化它自己的對(duì)象在C#中是不允許的。
以上這篇C# 實(shí)例化接口對(duì)象的方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
比Math類庫(kù)abs()方法性能更高的取絕對(duì)值方法介紹
這篇文章主要給大家介紹了一種比Math類庫(kù)abs()方法性能更高的取絕對(duì)值方法的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04C#中的Task.WaitAll和Task.WaitAny方法介紹
這篇文章介紹了C#中的Task.WaitAll和Task.WaitAny方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-04-04c#擴(kuò)展datatable轉(zhuǎn)json示例
這篇文章主要介紹了c#擴(kuò)展datatable轉(zhuǎn)json示例,需要的朋友可以參考下2014-05-05