下面小編就為大家帶來一篇C# 實例化介面物件的方法。小編覺得蠻不錯的,現在就分享給大家,也給大家做個參考。一起跟著小編過來看看吧
在head first 設計模式中用到了很多很多接口對象
先澄清一個問題,就是接口不僅可以聲明對象,而且可以把對象實例化,也可以當做參數被傳入。
一、介面回呼
這就是繼承中的向轉型。父類別 FL=new 子類別();只不過這裡的父類別就是interface介面。 (個人認為這裡不管是class的override還是interface的重寫,都是一樣的用法)
可以把實現某一接口類創建的對象的引用賦給該接口聲明的接口變量,那麼該介面變數就可以呼叫被類別實作的介面中的方法。實際上,當介面變數呼叫被類別實現的介面中的方法時,就是通知對應的物件呼叫介面方法
直接上程式碼
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;//声明类对象引用 Itemp tm = null;//声明接口对象引用 tm = new num(1.1, 2.2);//接口回调(向上转型) Console.WriteLine(tm.plus()); Console.ReadKey(); } } }
透過上面的例子,我們不難看出,介面物件的實例化實際上是一個介面物件作為一個引用,指向實現了它方法的那個類別中的所有方法,這一點非常像C++中的函數指標(在C#中類似委託),但是卻是有差別的。 C#中的介面物件實例化其實是一對多的,而C++中的函式指標是一對一的。
但是要注意的是,介面物件的實例化必須用實作它的類別來實例化,而不能用介面本身實例化。用介面本身實例化它自己的物件在C#中是不允許的。
以上是詳細介紹C#實例化介面物件的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!