Ich bin Einfügen den Code unten:Warum wird die abstrakte Methode im folgenden Code nicht ausgeführt?
abstract public class test
{
abstract public void add(int a, int b);
}
class Program : test
{
public void add(decimal a, decimal b)
{
decimal c = a + b;
Console.WriteLine("Decimal Addition : {0}", c);
}
public override void add(int a, int b)
{
int c = a + b;
Console.WriteLine("Addition : {0} ", c);
}
static void Main(string[] args)
{
Program obj = new Program();
obj.add(10, 111);
Console.ReadLine();
}
}
ich nicht in der Lage bin zu verstehen, warum die obige Zusammenfassung Klasse nicht ausgeführt wird? der obige Code läuft perfekt, was auch die Ausgabe produziert. Meine Frage ist auch nach dem Überschreiben der abstrakten Methode in der Program-Klasse immer noch beim Aufruf der add() -Methode, warum die nicht abstrakte Methode ausgeführt wird und die abstrakte Methode nicht?
Auch wenn ich das Programm zu ändern:
abstract public class test
{
abstract public void add(int a, int b);
}
class Program : test
{
public void add(decimal a, decimal b)
{
decimal c = a + b;
Console.WriteLine("Decimal Addition : {0}", c);
}
public override void add(int a, int b)
{
int c = a + b;
Console.WriteLine("Addition : {0} ", c);
}
static void Main(string[] args)
{
test obj = new Program();
obj.add(10, 111);
Console.ReadLine();
}
}
Dann meine abstrakte Methode ausführt und mir gewünschtes Ergebnis. Bitte erklären Sie es jemandem. Was passiert eigentlich in der Zeile darunter? Ich weiß es sehr grundlegende Frage, aber ich bin etwas verwirrt hier. bitte hilfe! Danke im Voraus.
test obj = new Program();
Was genau passiert anders als Sie erwarten? – Blorgbeard
Was ist deine Frage hier? –
wie oben gesagt, auch, Sie verwenden nicht wirklich Ihre abstrakte Klasse. Vielleicht wollen Sie 'test obj = new Program();' machen, das ein neues Programm erstellt, aber als "test" hält –