Mehrere abgeleitete abstrakte Klassen?

Muss ich schaffen, ein Kurs-Management-System mit Kurs-Kategorien:

Cooking, sewing and writing courses

cooking und writing haben jeweils 2 Kurse (Italienisch, Meeresfrüchte, kreativ-schreiben-und business-schreiben). Dies schafft abgeleitet abstract:

abstract course -> abstract cooking -> concrete seafood

Den abstrakten Kochen und schreiben haben gemeinsame Felder und einige gemeinsame Methoden, aber Sie haben auch abstrakte Methoden, die Abstrakt in der Basisklasse.

Kann das in C#? Wenn ich die abgeleiteten abstrakten Klasse abstrakte Methoden von Visual Studio sagt, Sie verstecken die Basisklasse Abstrakt und dann die konkrete Klasse Methoden haben Fehler zu sagen, die Basis-Klasse muss Abstrakt sein (ist es aber müssen sich nicht registrieren). Ich habe nach einer Antwort suchen. Ich weiß, einfacher Vererbung ist in C# aber die Vererbung trägt unten in der Kette. Was ist die beste Antwort?

Hier ist ein code-snippet - ich hoffe, es verdeutlicht das problem:

public abstract class Course
{
    public abstract void AddStudent(StudentName sn, int f);
    public abstract decimal CalculateIncome();
}

public abstract class WritingCourse : Course
{
    public void AddStudent(StudentName sn, int f)
    {
     //Add student
    }
    public abstract decimal CalculateIncome(); //can only be claculated in concrete
}

public class BusinessWritCourse : WritingCourse
{
    public void AddStudent(StudentName sn, int f):
    base(sn, false){}

    public decimal CalculateIncome()
    {
       return //do stuff
    }
}

public class SewingCourse : Course
{
    public override void AddStudent(StudentName sn, int f)
    {
        //do stuff
    }

    public override decimal CalculateIncome()
    {
       return //do stuff
    }
}
  • Kannst du Beispiel-code, der mit den Problemen bist du begegnet?
InformationsquelleAutor Julesyw | 2011-06-30
Schreibe einen Kommentar