![]() |
Was macht dieses "class"-Konstrukt
Hallo,
bin auf dieses class-Konstrukt gestossen.
Delphi-Quellcode:
Der Sinn ist mir aber nicht ersichtlich, was passiert da ?
type
TOperator_Add = class(TFunction) published class function Float(Param1, Param2: TVariable; _R: TVariable): TVariable; override; end; ..... class function TOperator_Add.Float(Param1, Param2: TVariable; _R: TVariable): TVariable; begin ... end; Warum "class" vor "function" ? :gruebel: :gruebel: :gruebel: So ein Konstrukt hab ich noch nie vorher gesehen und die OH war nicht besonders hilfreich. |
Re: Was macht dieses "class"-Konstrukt
Hast Du on der OH unter "Klassenmethoden" nachgesehen?
|
Re: Was macht dieses "class"-Konstrukt
Wenn du das "Class" wegläßt, dann kann diese Funltio/Prozedur nor von einem instantiiertem Objekt verwendet werden.
mit diesem Class kannst du diese Funktion/Prozedur auch verwenden, wenn du von der entsprechenden Klasse noch kein Objekt erzeugt hast. Also es muß zum ausführen der Klassenfunktion vorher keine .Create und nachher natürlich auch kein .Free vorhanden sein. Was es aber ganz genau damit auf sich hat, kann ich dir auch noch nicht mit Sicherheit sagen -.-'' |
Re: Was macht dieses "class"-Konstrukt
![]() |
Re: Was macht dieses "class"-Konstrukt
diese "class of typ" und das hier gemeinte "class function/procedure" in einer Klasse sind aber was unterschiedliches :zwinker:
|
Re: Was macht dieses "class"-Konstrukt
choose: Macht das Ganze nicht unbedingt klarer
himitsu: danke |
Re: Was macht dieses "class"-Konstrukt
Eine normale Methode wird an einer Instanz einer Klasse ausgeführt.
Delphi-Quellcode:
Klassenmethoden werden direkt an der Klasse ausgeführt.
Miep := TMiep.Create();
Miep.DoSomething();
Delphi-Quellcode:
Während du in einer Instanzmethode auf die Instanz Member deiner Klasse zu greifen kannst, geht das mit Klassenmethoden natürlich nicht.
TMiep.DoSomething();
Aber sage jetzt bitte nicht, dass du beruflich mit Delphi zu tun hast. :shock: |
Re: Was macht dieses "class"-Konstrukt
Eine normale Methode bekommt als ersten Parameter Self uebergeben das auf die Instanz des Objektes zeigt fuer das die Methode aufgerufen wurde.
Eine class-Methode bekommt in Self die Klasse selbst uebergeben. Das ist nichts anderes als wieder ein Objekt das die Klasse beschreibt. Da keine Objektinstanz uebergeben wird, kann die class-Methode auch ohne ein instanziiertes Objekt aufgerufen werden. Die Einsatzmoeglichkeiten sind vielfaeltig. Man kann Funktionen als Methoden implementieren, ohne je eine Objektinstanz zu benoetigen. Viel wichtiger ist es aber as man Objekte der Klasse instanziieren kann (die betrachtete Klasse heisse TMyClass). Man ruft einfach Self.Create auf und da dies ja ein instanziiertes Klassenobjekt TMyClass ist, bekommt man ein instanziiertes Objekt. Dazu hat TMyClass einfach eine Methode Create statt eines Konstruktors. |
Re: Was macht dieses "class"-Konstrukt
Hallo "Robert Marquardt",
danke, jetzt ist's klar. Zitat:
|
Re: Was macht dieses "class"-Konstrukt
Tja in Object Pascal können die Klassen selbst auch als Objekte verwendet werden. :)
Mit virtuellen Klassenmethoden hat man somit auch Polymorphy zur Verfügung. |
Re: Was macht dieses "class"-Konstrukt
Hi,
Zitat:
Zitat:
Da ich solch ein Konstrukt bisher noch nie gesehen habe und in diversen Büchern und der OH nichts dazu gefunden habe, wagte ich mal zu fragen. Dachte, das wäre der Sinn dieses Forum's. |
Re: Was macht dieses "class"-Konstrukt
Zitat:
Genau ab hier schreibe ich besser nix mehr... Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:21 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