W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
類可以從另一個(gè)類繼承以擴(kuò)展或定制原始類。
繼承一個(gè)類會(huì)重用該類中的功能。
類只能從一個(gè)類繼承。
在這個(gè)例子中,我們首先定義一個(gè)名為Item的類:
public class Item {
public string Name;
}
public class Product : Item{ // inherits from Item
public long InStoreCount;
}
public class DiscountProduct : Item{ // inherits from Item
public decimal Price;
}
下面是我們?nèi)绾问褂眠@些類:
Product myProduct = new Product {Name="CSS",InStoreCount=1000};
Console.WriteLine (myProduct.Name); // CSS
Console.WriteLine (myProduct.InStoreCount); // 1000
以下代碼使用DiscountProduct類。
DiscountProduct mansion = new DiscountProduct { Name="SQL", Price=250000 };
Console.WriteLine (mansion.Name); // SQL
Console.WriteLine (mansion.Price); // 250000
派生類Product和DiscountProduct從基類Item繼承Name屬性。
派生類也稱為子類?;愐卜Q為超類。
引用是多態(tài)的。
這意味著類型x的變量可以引用子類化x的對(duì)象。
例如,考慮以下方法:
public static void Display (Item i) {
System.Console.WriteLine (i.Name);
}
此方法可以顯示Product和DiscountProduct,因?yàn)樗鼈兌际荌tems:
Product myProduct = new Product ... ;
DiscountProduct mansion = new DiscountProduct ... ;
Display (myProduct);
Display (mansion);
多態(tài)性工作,因?yàn)樽宇惥哂衅浠惖乃泄δ堋?/p>
The <code>is</code> operator tests whether an
object derives from a specified class or implements an interface.
It is often used to test before downcasting.
if (a is Product) {
Console.WriteLine (((Product)a).InStoreCount);
}
標(biāo)記為virtual的函數(shù)可以被希望提供特殊實(shí)現(xiàn)的子類覆蓋。
方法,屬性,索引器和事件都可以聲明為virtual:
public class Item {
public string Name;
public virtual decimal FinalPrice { get { return 0; } }
}
子類通過應(yīng)用覆蓋修飾符覆蓋虛擬方法:
public class Product : Item {
public long InStoreCount;
}
public class DiscountProduct : Item {
public decimal Price;
public override decimal FinalPrice {
get {
return Price;
}
}
}
默認(rèn)情況下,項(xiàng)目的FinalPrice為0。
Product
不需要專門化此行為。
但是,DiscountProduct專門處理FinalPrice屬性以返回價(jià)格的值:
DiscountProduct mansion = new DiscountProduct { Name="SQL", Price=250000 };
Item a = mansion;
Console.WriteLine (mansion.FinalPrice); // 250000
Console.WriteLine (a.FinalPrice); // 250000
虛擬和重寫方法的簽名,返回類型和可訪問性必須相同。
重寫的方法可以通過base關(guān)鍵字調(diào)用其基類實(shí)現(xiàn)。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: