AGB  ·  Datenschutz  ·  Impressum  







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

Mehrfachvererbung

Ein Thema von idefix2 · begonnen am 15. Jul 2010 · letzter Beitrag vom 15. Jul 2010
Antwort Antwort
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#1

Mehrfachvererbung

  Alt 15. Jul 2010, 11:49
Zu dem Thema finde ich in der Delphi-Dokumentation nichts. Ich habe aber in einigen Programmen schon Konstrukte der Form

Delphi-Quellcode:
type
   NeueKlasse = class of (class1, class2, class3)
      ...
      end;
gesehen, vor allem In Verbindung mit Interfaces.

Ist das in Delphi mittlerweile möglich, und wenn ja, muss man dabei etwas speziell beachten?
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: Mehrfachvererbung

  Alt 15. Jul 2010, 11:52
Hi,

Mehrfachvererbung gibt es in Delphi nicht.

Was aber (wie du gesehen hast) möglich ist, ist dass man von 1 Klasse ableitet und beliebig viele Interfaces implementieren kann.

Generell:

Delphi-Quellcode:
type
  TKlasse = class(TBase, IIrgendwas, IBar, [Weitere Interfaces])
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Mehrfachvererbung

  Alt 15. Jul 2010, 11:53
Nein, Delphi unterstützt keine Mehrfachvererbung sondern nur Vererbung von Interfaces.
Übrigens kennt Java und C# auch keine Mehrfachvererbung. Und das nicht ohne Grund. Denn Mehrfachvererbung bricht u.U. den Grundsatz von Is-A
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.183 Beiträge
 
Delphi 12 Athens
 
#4

AW: Mehrfachvererbung

  Alt 15. Jul 2010, 11:58
Das es keine Mehrfachvererbung gibt, wurde ja schon gesagt.

Diese Programmiersprachen arbeiten nunmal alle "linear" (auch wenn es nicht immer danach aussieht, aber ein Thread läuft immer nur Linear ab) und da kann es nur einen Abarbeitungspfad und somit auch nur einen direkten Vorfahren geben, da man sich nicht einfach so aufsplitten kann.


Bei Interfaces ist es auch keine "Vererbung", denn das Objekt bekommt nichts vom Interface, sondern es wird nur das Interface mit dem Objekt verbunden ... das ist quasi nur sowas wie ein Alias (Umleitung, bzw. anderer Zugangspfad).

Das ist quasi wie mit einem Haus.

Dieses Haus kann nur ein Grundstück/Vorfahren darunter haben, aber dieses Haus könnte mehrere Adressen/Interfaces haben (Briefkasten, Postfach, Telefon, Handy), womit man die Einwohner/Funktionen dieses Hauses erreichen kann.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (15. Jul 2010 um 12:04 Uhr)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Mehrfachvererbung

  Alt 15. Jul 2010, 12:05
Eine Interface ist nur eine Vereinbarung/Verpflichtung Methoden mit festgelegten Signaturen zu implmentieren.
Markus Kinzler
  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 02:01 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