15 Stimmen

Abstrakte Klasse ohne abstrakte Methode

Ich bin überrascht zu wissen, dass eine abstrakte Klasse in C# auch ohne abstrakte Methoden möglich ist.

abstract class AbstractDemo
{
 public void show()
  {
    Console.WriteLine("In Show Method"); 
   }
}
class MainDemo:AbstractDemo
{
 public static void Main()
 {
    Console.WriteLine("In Main Method");
 }
}

Gibt es dafür eine Erklärung?

0voto

Andrea Parodi Punkte 5333

Sie können das Schlüsselwort abstract für eine Klasse verwenden, um dem Compiler zu signalisieren, dass sie nur durch Vererbung verwendet werden kann und nicht direkt; in diesem Fall sind Sie nicht verpflichtet, abstrakte Elemente in die Klasse aufzunehmen.

Dies ist gleichbedeutend damit, nur einen geschützten Konstruktor in die Klasse aufzunehmen, aber die Verwendung von abstract ist klarer und verständlicher.

0voto

Zied Punkte 1636

Keine bessere Erklärung als MSDN selbst http://msdn.microsoft.com/en-us/library/aa645615(v=VS.71).aspx

  • Eine abstrakte Klasse kann nicht direkt instanziiert werden, und es ist ein Kompilierzeitfehler, wenn man den new Operator auf eine abstrakte Klasse anzuwenden. Während ist es möglich, Variablen und Werte zu haben, deren Kompilierzeit-Typen abstrakt sind, werden solche Variablen und Werte zwangsläufig entweder null sein oder Referenzen auf Instanzen von nicht-abstrakten Klassen, die von den abstrakten Typen abgeleitet sind.
  • Eine abstrakte Klasse darf (muss aber nicht) abstrakte Mitglieder enthalten.
  • Eine abstrakte Klasse kann nicht versiegelt werden.

0voto

ankur goel Punkte 66

Wir haben gehört, dass es in einer abstrakten Klasse ein abstarktes Mitglied geben muss. Aber wenn ich die abstarct-Klasse ohne eine abstrakte Methode kompiliere, wird sie kompiliert. Das ist eine Überraschung für mich. Jetzt bin ich nicht in der Lage, den Artikel zu finden, der das genaue Verhalten einer abstarct-Klasse erklärt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X