AGB  ·  Datenschutz  ·  Impressum  







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

Understanding Class Defination

Ein Thema von ATS3788 · begonnen am 12. Feb 2015 · letzter Beitrag vom 16. Feb 2015
Antwort Antwort
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.654 Beiträge
 
Delphi 12 Athens
 
#1

AW: Understanding Class Defination

  Alt 12. Feb 2015, 11:24
Das ist wie eine "billige" Prozedur nur daß sie nicht irgendwo ungeliebt rumgammelt, sonder schön dort zugeordnet ist, wozu sie gehört.
Durch das virtual/override ist es eben keine "billige" Prozedur mehr. Damit lässt sich nämlich das interne Verhalten des TUIRibbonForm in der abgeleiteten Klasse nachträglich manipulieren, was mit einer "billigen" Prozedur eben nicht ginge. Es ist schon eher wie eine normale virtual/override Methode, aber sie steht eben bereits zur Verfügung, bevor die eigentliche Klasseninstanz erzeugt wird.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Understanding Class Defination

  Alt 12. Feb 2015, 11:31
Nja, wenn dich der Compiler zwingt es static zu machen, wenn man sich Getter und Setter für sein class property bastelt, dann bringt das auch nicht viel,
aber ansonsten hast du Recht.

Außerdem haben nicht-statische Klassenmethoden auch den versteckten Self -Parameter, in welchem der Typ drin steht, mit welchem diese Methode aufgerufen wurde.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (12. Feb 2015 um 11:34 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Understanding Class Defination

  Alt 12. Feb 2015, 11:44
Und das mit dem Self in der Klassenmethode ist auch gut so, denn dadurch geht das hier:
Delphi-Quellcode:
program dp_183894;

{$APPTYPE CONSOLE}
{$R *.res}

uses
  System.SysUtils;

type
  TFoo = class
  public
    class function Construct: TFoo;
  end;

  TBar = class( TFoo )

  end;

{ TFoo }

class function TFoo.Construct: TFoo;
begin
  Result := Self.Create;
end;

procedure Test;
var
  LFoo: TFoo;
begin
  LFoo := TBar.Construct;
  try
    Writeln( LFoo.ClassName );
  finally
    LFoo.Free;
  end;
end;

begin
  try
    Test;
  except
    on E: Exception do
      Writeln( E.ClassName, ': ', E.Message );
  end;
  ReadLn;

end.
TBar.Construct ruft die geerbte Klassenmethode von TFoo auf, da aber dort mit Self.Create die Instanz erzeugt wird, bekommen wir auch tatsächlich eine TBar Instanz zurück
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von ATS3788
ATS3788

Registriert seit: 18. Mär 2004
Ort: Kriftel
646 Beiträge
 
Delphi XE Starter
 
#4

AW: Understanding Class Defination

  Alt 16. Feb 2015, 06:27
Danke euch allen
Eine schöne Woche

Martin Michael
Martin MIchael
  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:04 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