AGB  ·  Datenschutz  ·  Impressum  







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

virtual und override

Ein Thema von Hador · begonnen am 13. Sep 2005 · letzter Beitrag vom 14. Sep 2005
Antwort Antwort
tommie-lie
(Gast)

n/a Beiträge
 
#1

Re: virtual und override

  Alt 13. Sep 2005, 16:35
Zitat von Hador:
1. Warum eine Variable vom Typ xy Definieren, wenn Der Variable der Typ yz zugewiesen wird.
Stell dir vor du sammelst daten in Objekten. Die Daten haben alle eine ähnliche Struktur, unterscheiden sich aber doch in rgendetwas. Also schreibst du eine Vaterklasse und leitest davon deine Klassen ab. Jetzt kriegst du einen Datenstrom mit 100 Datensätzen und willst die irgendwo unterbringen. Also kannst du ein Array der Vaterklasse erzeugen und kannst in dieses Array lauter Objekte der Kindklasse stecken, obwohl das Array eigentlich vom Typ der Vaterklasse ist. Zur Laufzeit schaust du dann, von welcher Art der aktuelle datensatz ist und erzeugst entsprechend das richtige Objekt. Würdest du für jede Art von Datensatz ein eigenes Array des richtigen Typs vorhalten, kann es unübersichtlich werden.

Zitat von Hador:
2. Warum kann ich der Variable vom Typ xy ein Objekt vom Typ yz zuweisen.
Weil Klassen in einer Hierarchie nach oben zuweisungskompatibel sind. Du kannst also einer Variable einer Vaterklasse immer ein Objekt einer abgeleiteten Klasse übergeben, egal die wievieilte Ableitung es ist. Beispielsweise kann eine Variable vom Typ TControl alle Controls der VCL beinhalten, von Memo bis Button, weil alle VCL-Controls von TControl abgeleitet sind, obwohl bei einigen noch Klassen dazwischenliegen (z.B. TWinControl, TCustomMemo, etc).

Zitat von Hador:
Andersherum währe es ja noch zu verstenen, denn yz beinhaltet ja xy aber xy ist doch nur ein Teil von yz.
Eben deswegen geht es.
Weil xy nur ein Teil von yz ist, kansnt du ein Objekt von yz einer Variable vom Typ xy zuweisen, weil der Compiler sicher sein kann, daß alles, was über die Variable zugänglich ist (an Feldern und Methoden) auch in dem Objekt von yz existieren. Andersrum hätte man die Klasse yz gegenüber xy erweitern können. Weise ich jetzt einer Variable vom Typ yz ein Objekt vom Typ xy zu, ist nicht der gesamte Speicher, den ich durch die Variable zugreifen kann, allokiert, weil ja die Klasse yz größer ist als xy.
  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 04:22 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