Re: unterschied VERERBUNG & POLYMORPHIE
gut, keine ahnung was interfaces sind aber wir haben die ganze sache in verbindung mit einer unit in der wir ne klasse erstellen und meinetwegen dort beschreiben wie die variable eingeliefert wird mithilfe einer pocedure und in einer anderen unit im selben projekt nutzen wir dann die klasse ausm ersten als basisklasse für eine 2. und bums soll das wohl vererbung und/oder polymorphie vom fachbegriff her sein
|
Re: unterschied VERERBUNG & POLYMORPHIE
Zitat:
@speedax:
Delphi-Quellcode:
Und bitte gib dir mehr Mühe mit deinen Beiträgen. Ich habe teilweise echt Mühe zu verstehen, was du sagen willst, und deine Beiträge strotzen nur so vor Tippfehlern. Du willst schließlich was von uns, also bitte mache es den Menschen, die dir helfen wollen nicht unnötig schwer.
// bezieht sich auf meinen code von oben
var Fahrzeug: TAuto; begin Fahrzeug := TAuto.Create; Fahrzeug.Fahre; Fahrezeug.Free; end; // Das ist KEINE Polymorphie (jedenfalls nach meiner Definition) // Folgendes IST Polymorphie: var Fahrzeug: TFahrzeug; begin Fahrzeug := TAuto.Create; Fahrzeug.Fahre; Fahrezeug.Free; end; // Siehst du den Unterschied? |
Re: unterschied VERERBUNG & POLYMORPHIE
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. 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! |
Re: unterschied VERERBUNG & POLYMORPHIE
ich sehe ihn tfahrzeug und taut...aber warum ist das untere welche und das obere nicht ...weil die klasse auf die du dich beziehst tfahrzeug ist?
|
Re: unterschied VERERBUNG & POLYMORPHIE
kann ich das so erklären?
wenn ich sage ich habe eine klasse eins function rechnen(addiet 2 zahlen) und ich leite jetzte die klasse einsplus ab dann hat die ja auch die function rechnen geerbt wenn ich aber will das die function rechnen auch subtrahiert oder nur subtrahiert dann definiere cih die mit diesem override neu...is das dann plymorphie? |
Re: unterschied VERERBUNG & POLYMORPHIE
Zitat:
@speedax: Bitte keine Doppel-Posts. [EDIT] (verdammt, ich bin langsam) Zitat:
Ich habe es mal etwas abgeändert:
Delphi-Quellcode:
[/EDIT]
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 |
Re: unterschied VERERBUNG & POLYMORPHIE
Zitat:
Delphi-Quellcode:
An der Stelle *** wird TOneDerivate.Foo ausgeführt, obwohl TBaseClass.Foo aufgerufen wird. Das ist Polymorphie.TBaseClass = class private public procedure Foo; virtual; abstract; end; TOneDerivate = TBaseClass private public procedure Foo; override; end; implementation var AnObject: TBaseClass; TOneDerivate.Foo; begin DoSomething; end; begin AnObject := TBaseClass.Create; AnObject.Foo; // *** end; |
Re: unterschied VERERBUNG & POLYMORPHIE
wo hab ich doppelgepostet?
was haltet ihr von meiner erklärung mit dem rechnen-beispiel |
Re: unterschied VERERBUNG & POLYMORPHIE
1) Auf Seite 1 ganz unten
2) Das Beispiel ist falsch. Das ist lediglich Überschreiben, und wenn du die Methode auf einer Variablen der Basisklasse (eins) aufrufst, wird auch diese ausgeführt, und nicht die von einsplus, was bei Polymorphie passieren müsste. |
Re: unterschied VERERBUNG & POLYMORPHIE
Zitat:
Bitte guck dir noch mal den editierten Teil meiner obigen Nachricht an. Vielleicht ist es so verständlicher. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz