AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Vererbung: Feld trotz private Dekl. in abgeleiteter Klasse?
Thema durchsuchen
Ansicht
Themen-Optionen

Vererbung: Feld trotz private Dekl. in abgeleiteter Klasse?

Ein Thema von xineohp · begonnen am 25. Sep 2004 · letzter Beitrag vom 26. Sep 2004
Antwort Antwort
xineohp

Registriert seit: 29. Jan 2004
Ort: Heusenstamm
420 Beiträge
 
Delphi 2005 Professional
 
#1

Vererbung: Feld trotz private Dekl. in abgeleiteter Klasse?

  Alt 25. Sep 2004, 22:12
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?
Peter Enenkel
  Mit Zitat antworten Zitat
Benutzerbild von nailor
nailor

Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
 
#2

Re: Vererbung: Feld trotz private Dekl. in abgeleiteter Klas

  Alt 25. Sep 2004, 23:06
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.
Michael N.
http://nailor.devzero.de/code/sharpmath/testing/ --- Tests, Feedback, Anregungen, ... aller Art sehr willkommen!
::: don't try so hard - it'll happen for a reason :::
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#3

Re: Vererbung: Feld trotz private Dekl. in abgeleiteter Klas

  Alt 25. Sep 2004, 23:23
wahrscheinlich mußt du gleich "public" verwenden. Außerdem besteht ein Unterschied zwischen Lesen und schreiben.
Gruß
Hansa
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#4

Re: Vererbung: Feld trotz private Dekl. in abgeleiteter Klas

  Alt 25. Sep 2004, 23:45
Zitat von Hansa:
wahrscheinlich mußt du gleich "public" verwenden. Außerdem besteht ein Unterschied zwischen Lesen und schreiben.
Warum das denn?
@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.
  Mit Zitat antworten Zitat
xineohp

Registriert seit: 29. Jan 2004
Ort: Heusenstamm
420 Beiträge
 
Delphi 2005 Professional
 
#5

Re: Vererbung: Feld trotz private Dekl. in abgeleiteter Klas

  Alt 26. Sep 2004, 10:08
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.

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
Peter Enenkel
  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:01 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