Ich möchte ein Mini-Markt-Programm implementieren. gibt es eine abstrakte Klasse namens (Waren) und zwei davon abgeleitete Klassen (trockene und kalte Ware). Wie füge ich einige Elemente hinzu? (Eier, Milch, Reis ... usw.)Wie instanziieren abstrakte Klasse C#?
Antwort
Sie können eine abstrakte Klasse nicht instanziieren. Es ist der einzige Zweck, als Basisklasse zu fungieren. Ihre Eier, Milch, muss Reis-Klasse von der Ware ableiten und die Funktionalität implementieren, wie unten dargestellt:
public abstract class Goods
{
}
public class DryGoods : Goods
{
}
public class ColdGoods : Goods
{
}
Sie dann die primitiveren Elemente erbt von Dry oder Kälte Waren haben.
public class Egg : DryGoods
{
}
public class Milk : ColdGoods
{
}
Alternativ, wenn Sie brauchen nicht die Milk
oder Egg
als Lichtgewichtsklassen (Oder übertragbar Objekte) Sie nur die abgeleiteten DryGoods
oder ColdGoods
Typen direkt und haben eine GoodsType
Eigenschaft nutzen könnten:
DryGoods egg = new DryGoods();
egg.GoodsType = DryGoods.Egg;
ColdGoods milk = new ColdGoods();
milk.GoodsType = ColdGoods.Milk;
'DryGoods' und' ColdGoods 'sollte wahrscheinlich auch abstrakt sein, nicht für den Code, sondern aus Gründen der Geschäftslogik. –
Wenn Sie waren, erstelle ich eine Instanz von DryGoods und ColdGoods anstatt eine neue Entity zu erstellen. –
Wenn ich Objekte aus abgeleiteten Klassen mache, was nutzt dann (GoodsType)? – Saja
Sie müssen ein Objekt der Unterklasse erstellen und dieses Objekt der Unterklasse verwenden, um die Werte festzulegen. Sie können eine abstrakte Klasse nicht instanziieren. Sie können es als Basisklasse verwenden nur ..
danke, wo soll ich die Objekte machen? in der WinForm-Implementierung? – Saja
in der .cs-Datei hat es. Sie sollten ein Objekt in der Unterklasse erstellen. –
Schauen Sie, haben Sie eine abstrakte Basisklasse:
public abstract class Good { }
Und da Sie Ihre Named Klassen haben:
public class Egg : Good { }
public class Milk : Good { }
public class Rice : Good { }
Sie können jetzt hinzufügen Eigenschaften und Methoden zur Basisklasse Gut.
können Sie jetzt auch Eigenschaften hinzufügen und Methoden zur benannten Klasse Ei, Milch und Reis :)
Sie können nun auch mehrere Eier, Milch und Reis, wenn Sie Goods
umbenennen 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);
Erben sie einfach von 'DryGoods' oder' ColdGoods'? Können Sie die Frage bearbeiten, um die Klassen zu zeigen, die Sie haben und wie Sie die anderen verwenden möchten (Eier, Milch usw.) – Rhumborl
Ich habe eine andere Klassen (Kühlschrank), (Regale) und (Warenkorb) Ich möchte die Elemente verwenden um sie in die Regale oder in den Kühlschrank zu stellen. und machen eine Winform, um die Artikel zu zeigen, legen Sie sie in den Warenkorb und Kasse, wie Kunden – Saja