AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

unterschied VERERBUNG & POLYMORPHIE

Ein Thema von speedax · begonnen am 4. Nov 2009 · letzter Beitrag vom 5. Nov 2009
Antwort Antwort
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#1

Re: unterschied VERERBUNG & POLYMORPHIE

  Alt 4. Nov 2009, 20:36
Zitat von Medium:
Dieser Artikel ist eventuell passender. Bei Polymorphie geht's letztlich darum, dass Methoden einer Klasse auch die Implementierung einer "späteren" Ableitung verwenden kann - hat also an sich erst mal herzlich wenig mit Mehrfachvererbung zu tun (was das oben beschriebene Ableiten von mehreren Klassen bzw. Implementieren von Interfaces wäre). Das heisst bisher waren alle Antworten in diesem Thread falsch.
Wichtig ist in diesem Zusammenhang auch noch das Konzept virtueller Methoden/Klassen, die in der Regel Polymorphie ermöglichen.

Vererbung und Polymorphie sind also keine nebeneinander stehenden Konzepte, sondern Polymorphie kann in einer Vererbungshierachie gegeben sein, oder auch nicht.
Gut, der Preis für die schönste Formulierung geht an dich Das gleiche habe ich aber im Grunde auch sagen wollen...

@speedax: Bitte keine Doppel-Posts.

[EDIT]
(verdammt, ich bin langsam)

Zitat von Medium:
Edit: Namenlozer liegt nicht ganz daneben übrigens. Was du zeigst, ist wie eine Polymorphie angewendet aussehen kann, es ist aber nicht klar, dass bei dir TFahrzeug die Methode Fahre der Klasse TAuto aufruft - dann wäre diese nämlich polymorph. Sie könnte aber auch einfach überschrieben/reintroduced sein!
Ah, ich verstehe was du meinst. Ja, ist vielleicht etwas missverständlich, gebe ich zu. Ich hatte versucht, dass Beispiel so schlank wie möglich zu halten.

Ich habe es mal etwas abgeändert:
Delphi-Quellcode:
interface

types
  TFahrzeug = class
    procedure MacheGeraeusch; virtual; abstract;
    procedure Fahre;
  end;

  TAuto = class(TFahrzeug)
    procedure MacheGeraeusch; override;
  end;

  TFahrrad = class(TFahrzeug)
    procedure MacheGeraeusch; override;
  end;

implementation

procedure TFahrzeug.Fahre;
begin
  ShowMessage('Start');
  MacheGerauesch;
  ShowMessage('Ziel erreicht');
end;

procedure TAuto.MacheGeraeusch;
begin
  ShowMessage('Brumm');
end;

procedure TFahrrad.MacheGeraeusch;
begin
  ShowMessage('Quietsch?');
end;

var
  UnbekanntesFahrObjekt: TFahrzeug;
begin
  UnbekanntesFahrObjekt := TAuto.Create:
  UnbekanntesFahrObjekt.Fahre;
  UnbekanntesFahrObjekt.Free;

  UnbekanntesFahrObjekt := TFahrrad.Create:
  UnbekanntesFahrObjekt.Fahre;
  UnbekanntesFahrObjekt.Free;
end
[/EDIT]
  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:40 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-2025 by Thomas Breitkreuz