非專業程式設計:C#中的介面怎麼理解

作為非專業的程式設計師,我一直不太追求理解一些程式設計的專業術語,只關注程式碼實現結果,有很多東西可能已經在用了,但是就是不知道是什麼。很長一段時間內,函式是我唯一能理解的程式設計術語(輸入引數,經過處理後,輸出結果)。

而在實現各種程式設計需求中,不斷地要尋求各種參考資料,慢慢地也就對各種專業術語有更多一點的瞭解。總的來說,各種術語其實都是程式碼塊的指稱,如果一個程式碼塊需要某種關鍵字構成,裡面的程式碼構成也有特定的要求,最重要的是指定了這種程式碼塊和別種程式碼塊的交流方式,那就稱之為某某(術語)。比如類這個術語,我也是接觸很久了都沒有試圖去理解它的含義,然後最終慢慢地我才知道它是面向物件程式設計中最基本的一種程式碼塊,由特定的關鍵字構成,裡面包含了屬性、方法、函式這些最基本的程式碼執行元素。

現在從VB轉向C#,也就重新開始過一遍C#的理論學習資料,然後就重新接觸介面這個術語,介面這個術語真的是見到太多了,現在終於在好奇心下,找了各種的資料去理解這個東西。

以下是目前我對介面的理解。

首先,介面也是一種程式碼塊,但它不是執行的程式碼塊,它是一種規則程式碼塊,一個介面就只定義了一些屬性、方法的名稱,裡面的屬性不能有值,方法不能有執行程式碼,那這有什麼用?沒錯,我一看到一個介面的例子程式碼時,產生的也是這個疑問:有什麼用?

原來,介面就是用來繼承的,一般是類來繼承(別的介面也能繼承,先說清楚類),繼承的類就叫介面的子類,好,重點來了,子類強制擁有接口裡面的屬性和方法等成員名稱,聽清楚了,是強制。街邊的奶茶,你走過可以不理,也可以掏錢喝一杯,但介面這杯奶茶,繼承它的子類是必須要喝的。再有,聽清楚了,是名稱,接口裡面如果定義了一個方法名稱叫阿黃,子類也必須在自己的程式碼塊裡寫一個方法叫阿黃(術語上叫重寫),沒有就出錯。

接口裡的阿黃只是名稱,而子類裡重寫的阿黃是有執行程式碼的,否則要個方法有毛用。

介面可以有無數個子類,無數個子類強制擁有一個叫阿黃的方法,但各個子類裡阿黃的方法裡的執行程式碼是不強制的,隨你寫什麼都行,但統一用一個方法名稱,裡面的程式碼應該是按照某種歸類的需求來寫的吧,這個用到的人才會懂了。

所以,介面就是用來統一子類的某些成員名稱的,所以它是一種規則。

執行子類裡介面規定好名稱的方法,也有便利的做法,就是把介面宣告為一個變數,然後把子類例項作為引數傳給介面變數(=)就可以,這樣需要執行哪個子類中的同名方法,就把那個子類例項傳給介面變數。這樣就可以根據需要來便捷地選擇執行不同的子類。(哦,把程式碼塊作為變數,這樣看好像有點用)

目前來說,我自己好像還沒用得上介面這種東西,畢竟程式碼不多也不復雜,也許大專案多人協作中介面更有價值吧。

這就是目前我對C#介面的理解,不知道對不對。