AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Klasse ableiten -> auf private Var zugreiffen...
Thema durchsuchen
Ansicht
Themen-Optionen

Klasse ableiten -> auf private Var zugreiffen...

Ein Thema von cherry · begonnen am 9. Dez 2009 · letzter Beitrag vom 9. Dez 2009
Antwort Antwort
Benutzerbild von cherry
cherry

Registriert seit: 14. Nov 2005
561 Beiträge
 
RAD-Studio 2009 Ent
 
#1

Klasse ableiten -> auf private Var zugreiffen...

  Alt 9. Dez 2009, 11:07
Hallo miteinander

Ich habe eine Komponente z.B. TMyComp(TCustomControl) jetzt habe ich dort im private Teil einige Variablen deklariert... z.B. myPrivateVar: Boolean;
Wenn ich jetzt eine Klasse von TMyComp ableite, z.b. class = TMyChildComp(TMyComp) kann ich dann auf myPrivateVar von TMyComp zugreiffen? wenn ja wie?

Danke schon mal
Ist das nur mein Gefühl, oder ist die ganze Welt verrückt geworden!?
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#2

Re: Klasse ableiten -> auf private Var zugreiffen...

  Alt 9. Dez 2009, 11:09
Nein, bei private kannst du nur innerhalb der selben Klasse oder der selben Unit auf die Eigenschaft oder Methode zugreifen. Wenn du in Abgeleiteten Klassen Zugriff benötigst, musst du die Variable als protected deklarieren.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Klasse ableiten -> auf private Var zugreiffen...

  Alt 9. Dez 2009, 11:10
Verschiebe diese in den protected Abschnitt.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von cherry
cherry

Registriert seit: 14. Nov 2005
561 Beiträge
 
RAD-Studio 2009 Ent
 
#4

Re: Klasse ableiten -> auf private Var zugreiffen...

  Alt 9. Dez 2009, 11:13
Ach du ***... und woher soll ich wissen dass ich später zugriff darauf benötige... ich denke dass es aber auch nicht sinvoll ist von Anfang an alle Methoden und Attribute als Protected zu deklarieren, oder???

Naja... werd halt versuchen die Variable nach Protected zu verschieben, hoffe das hat keinen Einfluss auf di Zig Projekte in denen die Komponente ein fester Bestandteil davon ist...

Danke und Guten Appetit...
Ist das nur mein Gefühl, oder ist die ganze Welt verrückt geworden!?
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.641 Beiträge
 
#5

Re: Klasse ableiten -> auf private Var zugreiffen...

  Alt 9. Dez 2009, 11:32
Zitat von cherry:
Ach du ***... und woher soll ich wissen dass ich später zugriff darauf benötige
Gar nicht.

Normalerweise soll eine Klasse den Zugriff auf private Felder so kapseln, dass jemand der die Klasse benutzt oder davon ableitet gar nicht weiss, ob es so ein Feld überhaupt gibt. Klassen verbergen die Implementierung. Deswegen sollte man in einer Klasse nur so viel wie absolut notwendig protected oder gar public machen.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#6

Re: Klasse ableiten -> auf private Var zugreiffen...

  Alt 9. Dez 2009, 11:43
Und wenn Du die abgeleitete Klasse in der selben Unit deklarierst wie die Basisklasse und Dich die Codevervollständigung nervt (die zeigt nämlich auch die privaten Felder der Basisklasse), kannst Du deren private Felder auch als strict private deklarieren. Damit umgehst Du die automatische friend-Deklaration innerhalb derselben Unit.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von cherry
cherry

Registriert seit: 14. Nov 2005
561 Beiträge
 
RAD-Studio 2009 Ent
 
#7

Re: Klasse ableiten -> auf private Var zugreiffen...

  Alt 9. Dez 2009, 12:04
Danke für den Hinweis!
Ist das nur mein Gefühl, oder ist die ganze Welt verrückt geworden!?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#8

Re: Klasse ableiten -> auf private Var zugreiffen...

  Alt 9. Dez 2009, 12:08
Gern geschehen, ich finde das selbst recht praktisch. Allerdings gilt das dann für alle privaten Felder, eine Vermischung zwischen strict und nicht strict ist AFAIK nicht möglich (oder ich kenne den Trick nicht).
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Klasse ableiten -> auf private Var zugreiffen...

  Alt 9. Dez 2009, 12:09
im Abschnitt "private-, protected-, public- und published-Deklarationen" der OH wird das alles auch nochmal ganz genau erklärt.

Delphi-Quellcode:
strict private
  {nur innerhalb der Klasse}
private
  {in der Klasse und auch in der Unit}
strict protected
  {nur in der Klasse und deren Ableitungen}
protected
  {nur in der Klasse und deren Ableitungen und auch den Units}
public
  {öffentlich}
published
  {im OI und per RTTI gelistet}
$2B or not $2B
  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 14:06 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz