AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Private-Methoden der Basisklasse überschreiben?
Thema durchsuchen
Ansicht
Themen-Optionen

Private-Methoden der Basisklasse überschreiben?

Ein Thema von little-x · begonnen am 4. Okt 2007 · letzter Beitrag vom 4. Okt 2007
Antwort Antwort
little-x

Registriert seit: 13. Apr 2007
Ort: Brandenburg
60 Beiträge
 
Delphi 6 Enterprise
 
#1

Private-Methoden der Basisklasse überschreiben?

  Alt 4. Okt 2007, 17:00
Hallo,

ich habe ein eigenes Control (MyDBEdit) abgeleitet von DBEdit.

Ich habe ja den Quellcode von DBEdit, sehe daher auch die als PRivate deklarierten Methoden. Von denen müsste ich eine überschreiben. Was ich definitiv nicht machen werde ist, eine Kopie von TDBEdit machen und meine eigenen Änderungen rein. Wenn, dann muss es über Ableitung mit, override funktionieren.

Leider kommt die Fehlermeldung, dass die Funktion in der Basisklasse nicht gefunden wird. Das liegt wohl am Private.

Bevor ich den Gedanken für immer verwerfe: Kennt jemand irgendeine Möglichkeit, private Methoden zu überschreiben? Oder hat jemand dieses Problem schon mal originell (irgendwie anders) gelöst?

Viele Grüße...
manchmal machts mich mürbe
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.639 Beiträge
 
#2

Re: Private-Methoden der Basisklasse überschreiben?

  Alt 4. Okt 2007, 17:03
Private methoden lassen sich nicht überschreiben. Deswegen sind sie private.
Der Architekt der Klasse hat sich garantiert etwas dabei gedacht, als er diese Methoden so entworfen hat. An Deiner Stelle würde ich Dein Konzept noch einmal überdenken und hinterfragen, ob ein anderer Ansatz nicht geschickter wäre.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Private-Methoden der Basisklasse überschreiben?

  Alt 4. Okt 2007, 17:04
private Deklarationen sind standardmässig bei der Ableitung nicht mehr sichtbar.
versuch ws mal mit reintroduce
Markus Kinzler
  Mit Zitat antworten Zitat
Sidorion

Registriert seit: 23. Jun 2005
403 Beiträge
 
#4

Re: Private-Methoden der Basisklasse überschreiben?

  Alt 4. Okt 2007, 17:13
Nicht grundsätzlich. Alle Klassen innerhalb einer Unit gelten als 'friend' und können gegenseitig die privaten Member sehen. Private Member können von Nachfolgern in der selben Unit sehr wohl überschrieben werden, solange sie virtuell sind.
Dies fällt hier aber aus, da der nachfolger sicher nicht in der selben Unit steht.
Mit reintroduce wäre ich vorsichtig, da dies nicht zieht bei Zeiger auf Vorfahrenklasse.
Manchmal sehen Dinge, die wie Dinge aussehen wollen mehr wie Dinge aus, als Dinge
<Esmerelda Wetterwachs>
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#5

Re: Private-Methoden der Basisklasse überschreiben?

  Alt 4. Okt 2007, 17:19
Zitat von Sidorion:
Nicht grundsätzlich. Alle Klassen innerhalb einer Unit gelten als 'friend' und können gegenseitig die privaten Member sehen. Private Member können von Nachfolgern in der selben Unit sehr wohl überschrieben werden, solange sie virtuell sind.
Zwischen die Methoden "sehen" und sie überschreiben können, liegen Welten. Nur weil du die privaten Methoden durch das friend-Prinzip sehen, aufrufen etc kannst, akzeptiert der Compiler aber noch lange kein Überschreiben.

/EDIT: Ok, mein D5 akzeptiert und compiliert eine solche Konstruktion und setzt sie auch richtig um. Aber ich bin mir eigentlich sicher, dass sich das friend Prinzip nicht auf einen solchen Fall beziehen sollte.
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.351 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Private-Methoden der Basisklasse überschreiben?

  Alt 4. Okt 2007, 17:22
Hi little-x,

ich hatte in einem anderem Forum mal ein Beispiel für das Überschreiben der Methode DataChange gepostet.
Vielleicht kannst du ja damit dein Problem lösen.
Allerdings würde ich einen anderen Ansatz ebenfalls immer vorziehen.

Cu, Frank
Frank Reim
  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 01:45 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