1. #1
    Avatar von Fitty
    Registriert seit
    19.05.2014
    Beiträge
    72
    Thanked 19 Times in 14 Posts

    Standard Abstrakte Klasse mit Konstruktor - Alternative?

    Hallo,

    ich habe eine abstrakte Klasse, von der ein paar andere Klassen erben. Diese abstrakte Klasse soll einen Konstruktor haben, der bei jeder Klasse die davon erbt auch aufgerufen wird.
    Vereinfacht sollte das so aussehen:


    public abstract class Person
    {
    private string name;
    public Person(string personName)
    {
    name = personName;
    }

    public string Name
    {
    get
    {
    return name;
    }
    }
    public string Age {get;set;}
    }

    public class Student : Person
    {

    }

    Ziel der Sache ist, dass ich die Klasse "Student" nun mit dem Konstruktor von "Person" aufrufen kann, also so:

    Student max = new Student("Max");

    Ich habe in der msdn auf https://msdn.microsoft.com/de-de/library/ms182126.aspx gelesen, dass das so nicht erlaubt ist.
    Die Alternative wäre, dass ich das Attribute in jeder meiner erbenden Klassen einbinde, also

    public abstract class Person
    {
    public string Age {get;set;}
    }

    public class Student : Person
    {
    private string name;
    public Student(string studentName)
    {
    name = studentName;
    }
    public string Name
    {
    get
    {
    return name;
    }
    }
    }

    Dann muss ich das aber in jeder erbenden Klasse einbinden, das finde ich lästig und fehleranfällig. Gibt es echt keinen anderen Weg wie man das lösen kann?
    Ich möchte halt dass eine Funktion der abstrakten Klasse bei jeder Klasse die davon erbt im Konstruktor aufgerufen wird, und zwar möglichst automatisch.
    Vielleicht ist hier ein Guru der weiß was zu tun ist

  2. #2
    Avatar von patlux
    Registriert seit
    26.10.2011
    Beiträge
    1.196
    Thanked 1.598 Times in 726 Posts
    Blog Entries
    2

    Standard AW: Abstrakte Klasse mit Konstruktor - Alternative?

    Auf der von dir verlinkten MSDN-Seite steht doch leidiglich das öffentliche Konstrukte nicht vererbt werden können, aber geschüzte schon. Statt Public also protected nutzen.

    Müsstest du wie folgt lösen:


    public class Student : Person
    {
    public Student(string personName) : base(personName) {}
    }


    Siehe https://msdn.microsoft.com/de-de/lib...=vs.90%29.aspx (runterscrollen! Das msdn hat nicht mal Anchor-Links, sodass man wirklich scrollen muss und keine Bereiche verlinken kann, super MSDN!)
    Geändert von patlux (13.03.2015 um 22:50 Uhr)

Ähnliche Themen

  1. Nosgoth - Free2Play, Neue Klasse uns Co
    Von SphinxDOPE im Forum Gaming-News
    Antworten: 5
    Letzter Beitrag: 16.03.2015, 23:24
  2. [Java] Kleine Klasse für Polynome
    Von Mr. White im Forum Java
    Antworten: 0
    Letzter Beitrag: 26.06.2013, 15:13
  3. PHP MYSQL Datenbank Klasse statisch
    Von Minecraft im Forum PHP
    Antworten: 1
    Letzter Beitrag: 11.01.2013, 09:58
  4. C# Klasse um E-Mails zu senden
    Von The Don of NYC im Forum .Net
    Antworten: 1
    Letzter Beitrag: 10.08.2012, 16:53
  5. [Frage] Klasse wiederholen
    Von iBlack im Forum Bildung
    Antworten: 9
    Letzter Beitrag: 28.05.2012, 15:25
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.