2016-04-30 259 views
5

我想實施一個迷你市場計劃。 有一個名爲(Goods)的抽象類和它的兩個派生類(乾貨和冷貨)。 如何在此之後添加一些項目? (雞蛋,牛奶,米飯等)如何實例化抽象類c#?

+1

只需從'DryGoods'或'ColdGoods'繼承它們?你可以[編輯]問題,以顯示你有什麼課程,你想如何使用其他(蛋,牛奶等) – Rhumborl

+0

我有另一類(冰箱),(架子)和(購物車) 我想使用的項目把它們放在架子上或冰箱裏。並製作一個winform來展示這些商品,把它們放到購物車並結帳,就像客戶 – Saja

回答

13

你不能實例化一個抽象類。它的唯一目的是充當基礎班。雞蛋,牛奶,大米類必須從商品派生並實現該功能,如下圖所示:

public abstract class Goods 
{ 

} 

public class DryGoods : Goods 
{ 

} 

public class ColdGoods : Goods 
{ 

} 

然後,您可以有更多的原始項目從乾燥或冷飲品繼承。

public class Egg : DryGoods 
{ 

} 

public class Milk : ColdGoods 
{ 

} 

另外,如果你不需要MilkEgg輕重量級(或可轉讓的對象),你可以只直接使用衍生DryGoodsColdGoods類型和有GoodsType屬性:

DryGoods egg = new DryGoods(); 
egg.GoodsType = DryGoods.Egg; 

ColdGoods milk = new ColdGoods(); 
milk.GoodsType = ColdGoods.Milk; 
+4

'DryGoods'和'ColdGoods'應該可能也是抽象的,不是爲了代碼的緣故,而是爲了商業邏輯。 –

+0

如果你是,我創建DryGoods和ColdGoods的一些實例,而不是創建新的實體。 –

+0

如果我從派生類中創建對象,那麼(GoodsType)有什麼用? – Saja

0

您必須創建子類的對象並使用該子類的對象可以設置值。你不能實例化一個抽象類。你可以使用它作爲唯一的一個基類..

+0

謝謝,我應該在哪裏製作對象? WinForm實現中的 ? – Saja

+0

它擁有.cs文件。你應該在子類中創建一個對象。 –

4

瞧,你有一個抽象基類:

public abstract class Good { } 

有你有你的命名類:

public class Egg : Good { } 

public class Milk : Good { } 

public class Rice : Good { } 

您現在可以添加屬性和方法的基類好。

現在,您還可以添加屬性和方法來命名類雞蛋,牛奶和大米:)

現在,您也可以有多個雞蛋,牛奶和大米,如果重命名GoodsGood

var allGoods = new List<Good>(); 

var eggs = new Egg[16]; 
allGoods.Add(eggs); 

var milk = new Milk[64]; 
allGoods.Add(milk); 

var rice = new Rice[64]; 
allGoods.Add(rice);