Verständnisproblem Abstraktion



  • Guten Abend,

    seit längerem versuche ich den Sinn abstrakter Klassen zu verstehen, darunter zählen auch Interface's. Ich verstehe den Sinn einfach nicht, wieso ich Methoden vorgeben sollte. Nehmen wir jetzt z.B. ein Interface, welches 2-3 Methoden vorgibt, damit ich in ein paar Klassen diese nutzen kann. Aber wofür ? Die Methoden sind doch komplett leer. Genau so mit abstrakten Klassen. Wieso soll ich in der Basisklasse mit virtual, Methoden für die Unterklassen vorgeben.

    Gegooglet habe ich schon zu genügend. Über eine professionelle und kompentente Antwort und vielleicht ein Beispiel, wäre ich sehr erfreut.

    mfg



  • Hallo

    Abstrakte Klassen != Interface - das ist sehr wichtig.

    Ich mach mal ein kurzes Beispiel zum Thema Interface:

    IScreen - mit der Methode Draw()

    Klassen namens Menü, Game, Highscore alle implementieren IScreen

    Nun kannst du eine Variable vom Typ IScreen definieren:

    IScreen test;

    Und je nach Tastendruck kannst du folgendes machen:

    A: test = new Highscore
    b: test = new Menü
    c: test = new Game

    In der Drawmethode schreibst du dann nur noch

    test.Draw() und je nachdem welcher, was test gerade ist, wird die entsprechende Methode verwendet. Ein Interface ermöglicht also, dass du alle Klassen, die dieses Interface implementieren entsprechend ansprechen kannst.

    chrische



  • Alles klar danke. Das klärt jetzt mein Interface Problem, aber wie sieht das mit abstrakten Klassen und deren Vorgabe durch virtual und sonstiges aus?



  • Hallo

    Wenn du Code vererben willst, musst du abstrakte Klassen verwenden, weil dies mir Interfaces nicht geht. Zum Thema Abstrakte Klassen gibt es aber sicher sehr viel im Netz.

    chrische



  • Nehmen wir an du hast zwei Klassen A und B... welche sich in ihrer funktion unterscheiden, aber trozdem logisch gemeinsamkeiten haben. Um Konsistenz du gewährleisten, würdem an bspw. ein abstrakte klasse implementiere welche die gemeinsame logik der Klasse A und B enthält. Wenn sich dann bspw. teile deR Logik unterscheiden in ihrer Funktion, kann so die funktion überschrieben werden umd das verhalten zu verändern. Das die klasse nur teile der logi von A und B bestizt , wird sie als abstract deklariert weil sie nicht alleine leben kann, sonder nur als teil von A o. B.....


Anmelden zum Antworten