![]() |
protected ?
Hi,
ich habe eine Variable im private Abschnitt deklariert. Nun habe ich gemerkt, daß ich die auch in abgeleiteten Formularen brauche und habe sie in den protected Abschnitt verschoben: Kein Zugriff war möglich. Dann wanderte sie weiter in "public", das ging. Dann wieder zurück nach "protected" : ging auch. :wall: |
Re: protected ?
wann kommt die frage?
|
Re: protected ?
Hi!
Ich glaube, die Frage besteht darin, warum es in protected geht, nachdem aus public kam, aber nicht, als es aus private kam. Ciao fkerber |
Re: protected ?
Für mich klingt's eher wie eine Feststellung mit unterschweliger Bitte um Prüfung, und bei Bestätigung eine Warnung ;)
|
Re: protected ?
Dann sage mir mal die Antwort.
|
Re: protected ?
Zitat:
|
Re: protected ?
Innerhalb der Unit ist von private bis published alles zugaenglich.
Von einer anderen Unit aus gilt: - private immer verborgen - protected nur in einer abgeleiteten Klasse zugaenglich! Nicht in der Klasse selbst. - public zugaenglich - published zugaenglich |
Re: protected ?
Hallo Robert,
Zitat:
Code:
(Aus der Onlinehilfe)
Sichtbarkeit Bedeutung & Verwendung private Zugriff nur für den Quelltext, der sich in derselben Unit befindet, in der auch die Klasse definiert ist. Verbirgt die Details der Implementierung. protected Zugriff nur für den Quelltext, der sich in der Unit (bzw. in den Units) befindet, in der auch die Klasse und ihre Nachkommen definiert sind. Definiert die Schnittstelle des Komponentenentwicklers. public Zugriff für jeden Quelltext. Definiert die Laufzeit-Schnittstelle. automated Zugriffsmöglichkeit für jeden Quelltext. Auf dieser Stufe werden Automatisierungs-Typinformationen erzeugt. Nur für OLE-Automatisierung. published Zugriff für jeden Quelltext. Außerdem ist der Zugriff vom Objektinspektor aus möglich. Definiert die Entwurfszeit-Schnittstelle. |
Re: protected ?
Genau. In der anderen Unit muss man von der Klasse ableiten und kann dann die protected Member zugreifen.
Es finden sich daher gerne Konstrukte der Art
Delphi-Quellcode:
type
// die eifachste Ableitung die moeglich ist THackMyObject = class(TMyObject); begin // die Umtypung ist gefahrlos, da die Klassen gleich sind, // aber nun wird der abgeleitete Typ verwendet THackMyObject(MyObject).ProtectedMember; |
Re: protected ?
Zitat:
Delphi-Quellcode:
type
TmyObject = class(TObject); TyourObject = class(TmyObject); // sieht private von TmyObject
Delphi-Quellcode:
type
TmyObject = class(TObject); type TyourObject = class(TmyObject); // sieht NICHT private von TmyObject |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:50 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