有關C#抽象類別

來源:互聯網
上載者:User

1.有關今天使用到原廠模式的的時候,用到抽象類別和抽象函數,在用子類繼承的時候,出現的很多錯誤,無數次在內心裡罵了n次fuck!!!!

好吧 ,我是新人,我要沉住氣,好好學習,不管啦,和大家分享一下今天學到一些很關鍵的知識。

大學裡教的東西很少設計原廠模式,那今天師傅讓我用工廠設計模式作一個項目的時候,哇塞,捉襟見肘,以前也只是那麼隨意一看,沒有運用的到實際中,現在要用的時候感覺真捉急。

好在有個好師傅,循序漸進講述簡單原廠模式和原廠模式的區別之類的,現在理解了之後其實也就是針對一個原則的區別:關閉-開放原則,在構造軟體的過程中,對擴張開放,但是對修改封閉。原廠模式雖然代碼顯得多,但很明顯做到這點。簡單工程模式,一旦要添加一個子類的時候,就要去人工手動的修改工廠類裡面的函數。但是在原廠模式裡面,我們只需要再添加一個工廠就好了。

說穿了,其實原廠模式是基於簡單原廠模式的。

上傳的簡單的計算機就是用原廠模式做的,相對比較簡單。我不和大家分析很多了,網上有很多分析的很好的,我這邊也有原廠模式的代碼。

言歸正傳,有關子類和父類,我覺得今天收益非淺

就是為什麼有子類和父類的存在,為什麼會有抽象這個概念,我覺得是因為很多事物之間都有共同點的原因。

大學三年,其實用的不多,也沒能深刻體會到。

2.在抽象類別裡面有很多抽象函數,這些函數為什麼抽象而不執行個體化直接調用呢?這是因為每個事物都有自己的類似的動作,但是又不相同。對於相似而又不相同的操作我們用抽象函數會方便很多很多。。。。

藍後將到抽象函數了,就引入兩個關鍵字:abstract和virtual

額,其實我主要用的是abstract,在父類裡聲明抽象函數,抽象函數是沒有方法體的,藍後在子類裡面重寫(override),而且只要在抽象類別裡面定義成抽象函數的,在子類裡面的一定要重寫!!!

藍後虛函數是有代碼的並明確允許子類去覆蓋,但子類也可不覆蓋,就是說可以直接用,不用重寫。用的有點不習慣啊。。。。

3.藍後偶就腦子抽筋的想到一個問題,如果在父類裡面有一個函數,不是抽象函數也不是虛函數,那麼你覺得如果在子類裡面重寫父類的這個方法呢?這個時候我們就用到new關鍵字,預設隱藏父類的同名函數,好的,俺還沒來的及做實驗,。。。。。要12點了,不行,俺得睡覺啦!!!晚安,各位IT界的同胞們。。。。。。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.