設計模式拓展 多型

2021-10-02 17:12:08 字數 2131 閱讀 3172

參考文章:

1.什麼是多型

2.多型有什麼優勢

3.多型怎麼用

概念:通過繼承實現的不同物件呼叫相同的方法,表現出不同的行為,稱之為多型。

多型有什麼優勢;

1、提高了**的維護性(繼承保證)

2、提高了**的擴充套件性(由多型保證)

public class animal

}public class cat : animal

}public class dog : animal

}class tester

}}

輸出如下:

animal eat...

cat eat...

dog eat...

在上面的例子中,通過繼承,使得animal物件陣列中的不同的物件,在呼叫eat()方法時,表現出了不同的行為。

多型的實現看起來很簡單,要完全理解及靈活的運用c#的多型機制,也不是一件容易的事,有很多需要注意的地方。

new的用法

public class animal

}public class cat : animal

}class tester

}

執行結果為:

animal eat...

animal eat...

cat eat...

可以看出,當派生類cat的eat()方法使用new修飾時,cat的物件轉換為animal物件後,呼叫的是animal類中的eat()方法。其實可以理解為,使用new關鍵字後,使得cat中的eat()方法和animal中的eat()方法成為毫不相關的兩個方法,只是它們的名字碰巧相同而已。所以, animal類中的eat()方法不管用還是不用virtual修飾,也不管訪問許可權如何,或者是沒有,都不會對cat的eat()方法產生什麼影響(只是因為使用了new關鍵字,如果cat類沒用從animal類繼承eat()方法,編譯器會輸出警告)。

abstract-override實現多型

我們在來討論一下用abstract修飾的抽象方法。抽象方法只是對方法進行了定義,而沒有實現,如果乙個類包含了抽象方法,那麼該類也必須用abstract宣告為抽象類,一個抽象類是不能被例項化的。對於類中的抽象方法,可以再其派生類中用override進行重寫,如果不重寫,其派生類也要被宣告為抽象類。

public abstract class animal

public class cat : animal//若不重寫則此類需要為抽象類

}public class dog : animal

}public class wolfdog : dog

}class tester

}}

cat eat...

dog eat...

wolfdog eat...

從上面可以看出,通過使用abstract-override可以和virtual-override一樣地實現多型,包括多層繼承也是一樣的。不同之處在於,包含虛擬方法的類可以被例項化,而包含抽象方法的類不能被例項化。

/// /// 飛 介面

///

public inte***ce iflyable

/// /// 喜鵲:子類,實現iflyable介面

///

public class magpie:bird,iflyable

/// /// 實現 iflyable介面方法

///

public void fly()

}

若只實現乙個功能,能使用介面最為方便。

什麼時候用介面什麼時候用抽象?

抽象:是對相同屬性和方法的提煉而得

介面:是對相同行為不同實現方法的提煉

在此之前堅持三個原則

第一次用到某個功能時,你寫乙個特定的解決方法;

第二次又用到的時候,你拷貝上一次的**;

第三次出現的時候,你才著手"抽象化",寫出通用的解決方法

說點自己的看法,先寫方法,若多次重複使用則可考慮多型。

介面多型靜態工廠設計模式模板設計模式

1,介面 什麼是介面?介面就是乙個特殊的抽象函式,裡面的方法全部是public abstract型別的方法,必須全部進行重寫。為什麼要是用介面?可以多繼承成多實現,對公升級拓展很方便 如何使用介面?通過關鍵字inte ce來定義乙個介面,通過implements來實現介面。2,多型 什麼是多型?事物...

繼承設計之狀態模式 多型

看到這裡有個狀態模式我就比較激動了,前面面試的時候被這個設計模式虐得太慘了,各種不會。正好這裡學習一下,看個例子。class actor public void act class sadactor extends actor class stage public void performplay ...

如何拓展設計思維

近期參加小組週會,其中乙個環節是營銷設計組的作品點評,雖然自己有很長一段時間沒有設計這類需求,但一直在關注,平時不定期的收藏了一些和網頁,拿出來與大家分享,並且從幾個方面來談談怎樣的設計能給人留下深刻印象。什麼是設計?時勢結合 緊隨潮流,激發思想和感情上的共鳴 結合當前社會事件如釣魚島 奧運會 中秋...