Protected Methoden eine Klasse in fremder Unit überschreiben.

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
thosch
Beiträge: 324
Registriert: Mo 10. Jul 2017, 20:32

Protected Methoden eine Klasse in fremder Unit überschreiben.

Beitrag von thosch »

Hallo,

Ich habe folgendes Problem. Konkret für die FPCanvas Klasse. Ich will eine neue Unit anlegen, dort einige Klassen benutzen, die abstrakte Methoden einführen. Diese abstrakten Methoden will ich nun überschreiben, die sind aber protected, nicht public. Einige sind sogar private. Wie kann ich die nun in einer anderen Unit in der von mir abgeleteten Klasse, mit der Basisklasse in der FPCanvas Unit, überschreiben? Ich bekommen die Fehlermeldung

meineUnit.pp(611,13) Error: identifier idents no member "überschriebene Methode"

Ich weiß, dass zum Beispiel private Methoden und Felder von außen nicht erreichbar sind, wenn ich aber die abgeleitete Klasse in derselben Unit implementiere, wie die die Basisklasse, habe ich auch auf die privaten Bezeichner dieser Basisklasse vollen Zugriff. WIe schaut das nun bei protected aus? Gibt es da inzwischen sowas wir friend class aus der Sprace c++ oder muss ich die von mir abzuleitenden Klassen in die FPCanvas Unit übernehmen. Es handelt sich um die FPCanvas Unit aus dem FCLImage Package.

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1435
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Protected Methoden eine Klasse in fremder Unit überschreiben.

Beitrag von fliegermichl »

Überschreiben kannst du nur als protected oder public deklarierte Methoden und auch nur dann wenn diese als virtual deklariert sind.

PascalDragon
Beiträge: 830
Registriert: Mi 3. Jun 2020, 07:18
OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
CPU-Target: Aarch64 bis Z80 ;)
Wohnort: München

Re: Protected Methoden eine Klasse in fremder Unit überschreiben.

Beitrag von PascalDragon »

protected Bezeichner sind in abgeleiteten Klassen sowohl nutz- als auch überschreibbar. Nur bei private führt kein Weg vorbei.
FPC Compiler Entwickler

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1435
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Protected Methoden eine Klasse in fremder Unit überschreiben.

Beitrag von fliegermichl »

PascalDragon hat geschrieben:
Mo 25. Jan 2021, 14:01
protected Bezeichner sind in abgeleiteten Klassen sowohl nutz- als auch überschreibbar. Nur bei private führt kein Weg vorbei.
und mit strict private auch nicht in der gleichen unit.

Sieben
Beiträge: 202
Registriert: Mo 24. Aug 2020, 14:16
OS, Lazarus, FPC: Ubuntu Xenial 32, Lazarus 2.2.0, FPC 3.2.2
CPU-Target: i386

Re: Protected Methoden eine Klasse in fremder Unit überschreiben.

Beitrag von Sieben »

Siehe dazu auch diesen Thread:

viewtopic.php?f=10&t=13218

Antworten