復用**的方式:繼承和組合
繼承:復用**的一種方式,可以復用**或概念。
組合:復用**,不能復用概念。
在c#中,object類是一切類的直接父類或間接父類。
子類擁有所有父類的非私有成員。
建構函式不能繼承
建立子類時,自動呼叫父類的建構函式,並且父類中的先執行
概念復用:
dog dog = new dog();
animal dog = new dog();
為什麼需要繼承/繼承的優點
復用**,開發效率高;
復用概念,實現類的層次性管理。
繼承的缺點
特點:父類的改變直接影響了所有的子類,而不需要通知子類。
需要這個特點:耦合度高 優點
不需要這個特點:耦合度高 缺點
耦合度高:父類的改變直接影響到所有的子類,而不需要通知子類
建議:
繼承層次不要太深,三層即可
盡量選擇抽象類來繼承 父類抽象類!
為什麼需要構造方法?
只要型別需要建立物件,都需要構造方法,因為構造方法是建立物件的唯一通道.
在類中可以定義建構函式,可以不定義建構函式,如果沒有定義,
編譯器會自動建立乙個無參建構函式
構造方法的作用 1》建立物件 唯一途徑 【必須】
2》初始化字段 【可選】
為什麼要過載構造方法?
//a:構造方法在建立物件的同時,並為物件成員做初始化,通過傳遞的引數為成員賦值
**乙個類可以有多個構造方法。
**當希望得到的物件的初始狀態不同,可以使用過載構造方法。
構造方法之間可不可以互相呼叫
可以,本類構造方法互相呼叫通過this關鍵字,
子類呼叫父類的構造方法通過base關鍵字
哪種情況適合用繼承組織類的關係 is成立!【技巧】
兩個或更多個類從概念上是一致的
設計原則:僅僅為了復用**【復用】,優先組合 實際開發組合用的多!
技巧: a b類 繼承 is a is b ,b is a 繼承
組合 has
訪問修飾符
public->internal->protected->private
internal:同乙個專案中可以訪問,不能跨專案;
protected:自己類或者派生類可以訪問。
class預設修飾符為internal。
關於訪問修飾符的注意事項
在命名空間中定義的元素無法顯示的宣告private,protected或protected internal;
通過base訪問父類中的protected, public, internal;
通過new物件來訪問public, internal;
C 物件導向 7 類的繼承和組合
1 定義類的時候不指定父類,則父類是object類。object類是任何類的直接或者間接父類。所有類都是object的子類。2 例1 class person public int age public class chinese person public void kongfu chinese ...
Python 物件導向 繼承 組合
1.組合將自定義類的物件作為類的屬性class teacher def init self,name self.name name class student def init self,name,teacher self.name name self.teacher teacher tec tea...
物件導向繼承 寄生式組合繼承
2.子類建構函式 function ministudent name,age,混合繼承 物件冒充 建構函式中屬性和方法 原型鏈繼承 繼承原型物件中屬性和方法 4.原型鏈繼承 object.create 以原型為基礎建立物件 ministudent.prototype object.create st...