C#之類于對象的關系、類的繼承、繼承的好處及規則
時間:2020-06-20 作者:管理員(yuán) 點擊:697
//類與對象的關系
//一(yī)切接對象,代碼中(zhōng)我(wǒ)(wǒ)們描述一(yī)個對象是通過其屬性和方法來說明的,對象必須是看得見摸得着的。
//類:我(wǒ)(wǒ)們把一(yī)些具有相同屬性和相同方法的對象,進一(yī)步封裝,抽象出類的概念。
//類就是個模子,确定了對象應該具有的屬性和方法
//對象是根據類創建出來的
//類不占内存,對象占内存
//類是一(yī)種數據結構使用關鍵字class聲明,可以包含數據成員(yuán)(常量和字段)、
//函數成員(yuán)(方法、屬性、事件、索引器、運算符、實例構造函數、靜态構造函數和析構函數)以及嵌套類型。
//類的繼承
//面向對象的三個基本特征:封裝、繼承、多态
//繼承:就是子類包含父類的數據結構和行爲方式,包括字段、屬性、方法和事件。盡管子類中(zhōng)沒有包含這些定義,但是依然可以使用父類的這樣成員(yuán)。
//在類的繼承中(zhōng),被繼承的類叫做父類或者基類,繼承的類叫做子類或者派生(shēng)類。
//繼承的好處:
//1)提高了代碼的重用性
//2)提高程序設計的效率
//3)爲程序設計中(zhōng)的特别需要提供了編寫代碼的自由空間,從而提高了已有程序設計成果的可擴展性
//類繼承的規則
//1)單根行(隻能繼承一(yī)個類)
//2)傳遞性(class a:b class b:c 那麽a類也繼承c類的成員(yuán))
//3)派生(shēng)類定義與基類型同名的成員(yuán),則覆蓋基類成員(yuán)。(定義同名的成員(yuán)要加上new關
//鍵字,用來隐藏基類中(zhōng)同名的成員(yuán))代碼如下(xià):
//private string _name;
//public new string Name
//{
// get{return _name;}
// set(_name=value;)
//}
//4)派生(shēng)類自然繼承基類的成員(yuán),但不能繼承基類的構造函數的成員(yuán)。
//特别說明:子類中(zhōng)不能繼承父類中(zhōng)的構造函數,但是會默認的調用父類中(zhōng)的無參的構造函數。
//如果父類中(zhōng)的構造函數被重寫,那麽子類中(zhōng)默認調用就會報錯,有兩種方法避免這個問題
//1)在父類中(zhōng)再寫一(yī)個無參的構造函數,弊端:在每個子類當中(zhōng)都需要再進行一(yī)次構造
//函數的重寫與各個字段的初始化
//2)使用關鍵字(:base() )
//如果不希望某個類作爲基類,那麽就必須使用sealed關鍵字(sealed class class1),但是抽象類(使用abstract: public abstract class clas1)不能作爲封閉的類使用,因爲抽象類的本質決定它們必須作爲基類使用。封閉類的作用是防止意外(wài)的派生(shēng)操作。