有關C#抽象類

wzm10455發表於2013-08-01

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

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

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

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

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

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

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

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

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

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

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

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

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

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

相關文章