AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Delphi Vererbung: Wie rufe ich Klasse.Parent.Methode auf?
Thema durchsuchen
Ansicht
Themen-Optionen

Vererbung: Wie rufe ich Klasse.Parent.Methode auf?

Ein Thema von MaBuSE · begonnen am 23. Okt 2014 · letzter Beitrag vom 27. Okt 2014
Antwort Antwort
Benutzerbild von MaBuSE
MaBuSE

Registriert seit: 23. Sep 2002
Ort: Frankfurt am Main (in der Nähe)
1.840 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

AW: Vererbung: Wie rufe ich Klasse.Parent.Methode auf?

  Alt 27. Okt 2014, 14:45
Delphi-Quellcode:
...
procedure TMutter.a(x: Boolean);
begin
...
  TKind(Self).b;
...
Schwerer Fehler.
1. Woher soll die Mutter wissen, das es ein Kind gibt?
Delphi-Quellcode:
...
  if Self is TKind then (Self as TKind).b;
...
2. Welche Methode soll aufgerufen werden, wenn es noch eine Ableitung der TMutter (oder von TKind) gibt?
In diesem Fall würde automatisch die von TMutter aufgerufen.
Da sie ja nicht mit reintreduce überschrieben wurde.

3. Wenn die Mutter wissen muss, das es genau das eine Kind gibt, wozu dann zwei Klassen?
Das ist die Schwachstelle. Dann wird es umständlich.
Delphi-Quellcode:
...
  if Self is TLieblingsKind then
  begin
   (Self as TLieblingsKind).b
  end
  else
  begin
    if Self is TStiefKind then
    begin
      (Self as TStiefKind).b
    end
    else
    begin
      // Mutterschaftstest durchführen.

      // Den Vorteil, den Mütter haben ist,
      // das sie in der Regel wissen, dass es ihre Kinder sind.
    end;
  end;
...
Aber wahrscheinlich gibt es dafür auch einen einfacheren Weg.

Fakt ist, das die Mutter alle Kinder (und Kindes-Kinder), die eine Sonderbehandlung benötigen, kennen muss.
Das icht schlecht.
Das ist bei der internal_proc Lösung nicht der Fall.

Mach es so, wie Uwe vorgeschlagen hat. Die Mutter ruft entweder explizit die eigene Methode oder aber die virtuelle Methode auf. So ist es OOP-konform und auch sauber.
Ich habe es wie Uwe gemacht.
Wenn du meine Texte gelesen hättest, wüsstest Du wie ich darüber denke.
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz