C 我理解的介面 抽象類 以及事件

2022-01-23 04:28:28 字數 1461 閱讀 5388

面試中無數次被問及到什麼是介面,什麼是抽象類,介面和抽象類有什麼區別?什麼是委託,什麼是事件。

請寫出貓叫了,老鼠跑了的例子。。。。。

這些東西對於一些初學者來說可能還真的有點搞不懂,對於一般工作5,6年以上的人來說,實在不屑一提,

類:對事物或者某乙個物體的概括描述

抽象類:對於一類事物的高度抽象。可以實現任何介面

介面:對方法的一組抽象提取。

事件:暴露給關聯類的自定義實現,用於解除兩個類之間的耦合。

在基於模板template模式中,也是我們會無意中就會使用到的方法。將一些不變的公共的部分,提取出來方法父類當中,而對於每乙個獨立變化的點,我們將

他們封裝為抽象方法。

對於上述的乙個模板,我們標記為紅色的方法,列印結果,它有可能在控制台列印輸出,或者放在瀏覽器中顯示等等。對於這個點,它是可變的,也就是我們所說的

它是抽象的。

在策略strategy模式當中,我們了解到它是對抽象的策略演算法的呼叫。例如,超市裡面計算商品的結果。

可能部分商品打3,5折,也有可能不打折,或者還有很多種可能,而我們最終要得到商品的總**。對於上述的策略,我們認為它是可變的,是抽象的。

經典的策略模式**可能如下:

對於不同的策略方法,我們只要再實現對應不同的iaction即可。

在c#中,我們知道有個aop的概念,俗稱面向切面程式設計。如果我們不通過自定義的特性attribute,或者第三方aop方法攔截去實現,有沒有辦法實現呢。

以下是我在專案中經常使用到的方法,懶人就是懶啊。

我個人將它理解為解除兩個類之間的耦合的最佳工具。還是用貓叫了,老鼠跑了來演示下。

在經典的觀察者模式當中,或許也會存在一些耦合,仔細觀察上述**,兩個類之間的沒有任何一方類的呼叫,我們稱它們沒有任何的耦合。

那麼如何能讓她們相互通知,那就是依賴於我們的事件。

**雖然很簡單,但是專案當中,大夥從來不知道如何妙用它。最近的專案看見同事經常在父窗體呼叫子窗體,然後子窗體需要重新整理父窗體的控制項的時候。

直接在子窗體中將父窗體放入子窗體的建構函式中,直接產生了依賴。如果能在子窗體中宣告乙個事件,將它理解為要傳送的訊息。父窗體來實現這個接受訊息的函式,是不是更加優雅點呢。

介面以及抽象類

a 介面的格式 訪問修飾符 inte ce 介面名 a 抽象類的注意事項 1.抽象類可以繼承類或者抽象類。2.抽象類可以繼承類或者抽象類,同時再去實現介面。3.抽象類可以定義類和介面中所有的內容。抽象類是類和介面的整合 4.抽象類也是不能例項化物件的。d 繼承抽象類的格式 public class ...

我對介面與抽象類的理解

1 從程式設計思想上來講,抽象類首先是類,具有分類學的意義,有兩層含義,一是以研究物件的整體來劃分的,二是互斥性。類一定存在具體的物件才有意義。分類一般採用樹型層級進行。一般情況下,上一層分類都是對下一層分類的分類。而介面表達的是一種標準,本身不具有分類學意義,但可以作為一種分類的屬性。介面是從物件...

我所理解的介面和抽象類

參考 在實踐過程中,抽象類和介面都經常用到。但是,對於什麼情況下該用抽象類,什麼情況下該用介面,總是有點搞不清楚。於是,在閱讀別人對著兩者理解之後,終於對兩者的區別有了更進一步的理解。抽象類重點在於對於屬性和方法的繼承 而介面則重在多個類 可能他們之間毫無聯絡 對同一種方法或者屬性的描述,體現了多型...