![]() |
Vererbung: Feld trotz private Dekl. in abgeleiteter Klasse?
moin,
ich habe eine Klasse in der ein Feld als private deklariert ist, nun möchte ich aber aus einer abgeleiteten Klasse auf dieses Feld zugreifen, was so natürlich nicht geht. Kann ich das Feld in meiner abgeleiteten Klasse einfach nochmal deklarieren? oder wie kann ich das Problem sonst lösen ohne die Basisklasse zu verändern? |
Re: Vererbung: Feld trotz private Dekl. in abgeleiteter Klas
einfach mal deinen kommentar ignorier:
am einfachsten wäre es wirklich, die sache auf protected zu setzen!!! ob es sowas wie reintruduce auch für variablen gibt, weiß ich nicht. |
Re: Vererbung: Feld trotz private Dekl. in abgeleiteter Klas
wahrscheinlich mußt du gleich "public" verwenden. Außerdem besteht ein Unterschied zwischen Lesen und schreiben.
|
Re: Vererbung: Feld trotz private Dekl. in abgeleiteter Klas
Zitat:
@Topic Die Unterscheidung zwischen private oder protected ist eine reine Designfrage. Wenn du es für inkonsistent ansiehst, dass ein Nachfahre diesen Wert ändert -> private, ansonsten halt protected. ;) Wählst du private, kannst du den Wert zum Bleistift über den Constructor setzen. kleines Bsp.
Delphi-Quellcode:
program Miep;
{$APPTYPE CONSOLE} type Base = class private fName :string; public property Name :string read fName; constructor Create(const pName :string); end; type Person = class(Base) private fVorname :string; public property Vorname :string read fVorname; constructor Create(const pName, pVorname :string); end; constructor Base.Create(const pName :string); begin inherited Create(); fName := pName; end; constructor Person.Create(const pName, pVorname :string); begin inherited Create(pName); fVorname := pVorname; end; var testPerson :Person; SenselessVar :string; begin testPerson := Person.Create('Schulz', 'Hans'); Writeln(testPerson.Name, ','#32, testPerson.Vorname); Writeln('Zum Beenden bitte den Any-Key suchen... :P'); // frag's Pferd wie man eigentlich auf eine Eingabe wartet :gruebel: Read(SenselessVar); end. |
Re: Vererbung: Feld trotz private Dekl. in abgeleiteter Klas
Danke für die Antworten, aber: Problem nicht gelöst!
Ich kann/will die Basisklasse nicht änderen, da es sich um eine Kompo von Borland handelt und ich nicht gerne in Qriginalquelltexten rumpfusche. Andererseíts ist das Problem wohl auch so nicht lösbar. Es wäre ja auch irgendwie widersinnig wenn man eine private Deklaration so einfach umgehen kann ... private existert ja gerade damit man nicht drauf zu greifen kann. :roll: Ich werd wohl um das Problem zu umgehen in der Hirachie einen Schritt nach oben gehen, wo besagtes Feld noch nicht (als private) deklariert ist. Ist zwar mühsam, geht aber wohl nicht anders und außerdem gibt es ja noch copy&paste :stupid: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:32 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