2016-04-30 8 views
5

Я хочу реализовать программу мини-рынка. есть абстрактный класс с именем (Товары) и два производных класса из него (сухие и холодные товары). Как добавить некоторые элементы после этого? (яйца, молоко, рис ... и т. д.)Как создать экземпляр абстрактного класса 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 
{ 

} 

В качестве альтернативы, если вам не нужны Milk или Egg в легких весовых классов (или переводные объекты), вы могли бы просто использовать полученные DryGoods или ColdGoods типов непосредственно и имеют GoodsType свойство:

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

Вы должны создать объект подкласса и использовать этот объект подкласса, вы можете установить значения. Вы не можете создать абстрактный класс. Вы можете использовать его только как базовый класс ..

+0

спасибо, где я должен делать объекты? в реализации WinForm? – Saja

+0

в файле .cs. Вы должны сделать объект в подклассе. –

4

Посмотрите, у вас есть один абстрактный базовый класс:

public abstract class Good { } 

И у вас есть именованные классы:

public class Egg : Good { } 

public class Milk : Good { } 

public class Rice : Good { } 

Теперь вы можете добавить Свойства и методы для базового класса Хорошо.

Теперь Вы можете также добавить свойства и методы к названному классов яиц, молока и риса :)

Теперь вы можете иметь несколько яиц, молока и риса, если переименовать Goods в Good:

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); 
Смежные вопросы