2016-04-30 22 views
5

私はミニマーケットプログラムを実装したいと考えています。 そこには、(Goods)という名前の抽象クラスと、そこから2つの派生クラス(dryおよびcold商品)があります。 その後いくつかのアイテムを追加するには? (卵、牛乳、米など)抽象クラスC#をインスタンス化する方法は?

+1

「DryGoods」または「ColdGoods」からそれらを継承しますか? (卵、牛乳など) – Rhumborl

+0

私は別のクラス(冷蔵庫)、(棚)、(カート)を持っています 私はアイテムを使いたいですか?棚や冷蔵庫に置くことができます。アイテムを表示するためにwinformを作成し、カートやチェックアウトに入れてください。 – Saja

答えて

13

抽象クラスをインスタンス化することはできません。それは基本クラスとして行動することだけです。あなたの卵、牛乳、米クラスは、製品から派生し、以下に示すように、機能を実装する必要があります。

public abstract class Goods 
{ 

} 

public class DryGoods : Goods 
{ 

} 

public class ColdGoods : Goods 
{ 

} 

その後、ドライまたはコールド商品から継承し、より原始的なアイテムを持つことができます。

あなただけの直接派生 DryGoodsまたは ColdGoods型を使用して GoodsType性質を持っている可能性が代わり
public class Egg : DryGoods 
{ 

} 

public class Milk : ColdGoods 
{ 

} 

あなたは軽量クラス(または譲渡するオブジェクト)としてMilkまたはEggを必要としない場合:

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

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

'DryGoods'と' ColdGoods'は、コードのためではなく、ビジネスロジックのために、おそらく抽象的でなければなりません。 –

+0

もしあなたでしたら、私はDryGoodsとColdGoodsのインスタンスを作成し、代わりに新しいEntityを作成します。 –

+0

派生クラスからオブジェクトを作成すると、(GoodsType)の使用は何ですか? – Saja

0

サブクラスのオブジェクトを作成し、そのサブクラスのオブジェクトを使用して値を設定できます。抽象クラスをインスタンス化することはできません。あなたが1つの抽象基本クラスを持っている..唯一の基本クラスとして

+0

ありがとう、私はオブジェクトを作るべきですか? WinForm実装の ? – Saja

+0

には.csファイルがあります。サブクラスでオブジェクトを作成する必要があります。 –

4

ルックを使用することができます:

public abstract class Good { } 

そしてそこにあなたの名前のクラスがあります。

public class Egg : Good { } 

public class Milk : Good { } 

public class Rice : Good { } 

をあなたは今すぐ追加することができます基本クラスGoodへのプロパティとメソッド。あなたはGoodGoodsの名前を変更する場合

あなたは今も名前付きクラスの卵、牛乳、そしてライスにプロパティとメソッドを追加することができます:)

をあなたは今も、複数の卵、ミルクとライスを持つことができます。

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); 
関連する問題