我想实施一个迷你市场计划。 有一个名为(Goods)的抽象类和它的两个派生类(干货和冷货)。 如何在此之后添加一些项目? (鸡蛋,牛奶,米饭等)如何实例化抽象类c#?
回答
你不能实例化一个抽象类。它的唯一目的是充当基础班。鸡蛋,牛奶,大米类必须从商品派生并实现该功能,如下图所示:
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;
'DryGoods'和'ColdGoods'应该可能也是抽象的,不是为了代码的缘故,而是为了商业逻辑。 –
如果你是,我创建DryGoods和ColdGoods的一些实例,而不是创建新的实体。 –
如果我从派生类中创建对象,那么(GoodsType)有什么用? – Saja
您必须创建子类的对象并使用该子类的对象可以设置值。你不能实例化一个抽象类。你可以使用它作为唯一的一个基类..
谢谢,我应该在哪里制作对象? WinForm实现中的 ? – Saja
它拥有.cs文件。你应该在子类中创建一个对象。 –
瞧,你有一个抽象基类:
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);
只需从'DryGoods'或'ColdGoods'继承它们?你可以[编辑]问题,以显示你有什么课程,你想如何使用其他(蛋,牛奶等) – Rhumborl
我有另一类(冰箱),(架子)和(购物车) 我想使用的项目把它们放在架子上或冰箱里。并制作一个winform来展示这些商品,把它们放到购物车并结帐,就像客户 – Saja