![]() |
Sichtbarkeit einer Methode erhöhen?
Joar, also bei den Property kann man doch recht einfach die Sichtbarkeit nachträglich herhöhen.
Delphi-Quellcode:
Warum kann man das aber nicht mit den Methoden machen
type
THiddenClass = class protected property Irgendwas: Integer read GetWas write SetWas; end; TVisibleClass = class(THiddenClass) public property Irgendwas; end; oder hab ich nur noch nicht rausbekommen, wie sowas geht? Gut, möglich wäre ja die gewünschte Methode zu überschreiben (verdecken) und dann via inherited die versteckte Methode aufzurufen, aber so sonderlich elegant ist das nicht unbedingt. |
Re: Sichtbarkeit einer Methode erhöhen?
Ich verstehe die Frage nicht. Funktioniert doch genau so, man muss sie allerdings überschreiben.
|
Re: Sichtbarkeit einer Methode erhöhen?
Nein. Zugegeben, ich musste das auch erst 2 mal lesen. Es geht ihm darum, die Methode in der geerbten Klasse nicht neu implementieren zu müssen, sondern einfach wie bei Properties nach public schieben und gut.
|
Re: Sichtbarkeit einer Methode erhöhen?
@DeddyH: Genau.
Delphi-Quellcode:
type
THiddenClass = class protected procedure Irgendwas; end; TVisibleClass = class(THiddenClass) public procedure Irgendwas; // hier muß man ja die Methode nochmal implementieren, end; // auch wenn man sie NUR verschieben möchte |
Re: Sichtbarkeit einer Methode erhöhen?
Delphi-Quellcode:
type
THiddenClass = class protected procedure Irgendwas; virtual; end; TVisibleClass = class(THiddenClass) public procedure Irgendwas; override;// hier muß man ja die Methode nochmal implementieren, end; // auch wenn man sie NUR verschieben möchte implementation procedure TVisibleClass.Irgendwas; begin inherited Irgendwas; end; |
Re: Sichtbarkeit einer Methode erhöhen?
Zitat:
Zitat:
|
Re: Sichtbarkeit einer Methode erhöhen?
@HERMES: so würde man die Methode überschreiben, aber das will ich ja nicht.
Im Ergebnis (TVisibleClass) soll die Methode (aus THiddenClass) einfach nur sichtbar werden, so als wäre sie in Public deklariert wurden, obwohl sie in THiddenClass ja versteckt (protected) ist. |
Re: Sichtbarkeit einer Methode erhöhen?
Du bräuchtest quasi sowas:
Delphi-Quellcode:
Das gibt Delphi nicht her - wär aber ein nettes Enhancement.
type
THiddenClass = class protected procedure Irgendwas; virtual; end; TVisibleClass = class(THiddenClass) public procedure Irgendwas; inherited; end; Hätte aber imho keinen wirklichen Nutzen, sondern unterstützt nur die Faulheit eines Programmierers in einigen wenigen Fällen. |
Re: Sichtbarkeit einer Methode erhöhen?
Zitat:
So könnte man eine Grundklasse erstellen und braucht dann nur, je nach Nutzen, die nötigen Funktionen freischalten. Also genauso, wie es bei den TCustom...-Klassen der VCL auch gemacht wird. Leider funktioniert dieses aber nur mit Properties, aber eine Klasse besteht eben auch noch aus Methoden. Das virtual ist nicht nöig, aber so wäre es schon irgendwie OK.
Delphi-Quellcode:
type
THiddenClass = class protected procedure Irgendwas; end; TVisibleClass = class(THiddenClass) public procedure Irgendwas; inherited; end; procedure THiddenClass.Irgendwas; begin end; |
Re: Sichtbarkeit einer Methode erhöhen?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:01 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