Frage zu CodeSysV3.4 - OOP

StructuredTrash

Level-3
Beiträge
1.166
Reaktionspunkte
310
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe gerade ein wenig Zeit, um mit CodeSys V3.4 herumzubasteln. Aktueller Stand s. Screenshot. Ich habe ein Interface "itfIntf", das von einem FB "fblFblk1" implementiert wird. Dieser FB wird von einem "fblFBlk2" erweitert. Dabei übernimmt der "fblFBlk2" die Eigenschaft "prpProp1" vom Interface "itfIntf", die Set/Get-Methoden sind leer. Warum erbt "fblFBlk2" sie nicht von "fblFBlk1"?
 

Anhänge

  • Projektbaum.jpg
    Projektbaum.jpg
    49,3 KB · Aufrufe: 45
Vererbung

Hallo,

Methoden werden ebenso vererbt, jedoch nicht im Baum dargestellt.

Siehst du jedoch beim zugriff auf fblFBlk2.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

Methoden werden ebenso vererbt, jedoch nicht im Baum dargestellt.
Ja, das ist mir schon klar. Mir geht es aber darum, das etwas NICHT vererbt wird. Die Set-/Get-Methoden der Eigenschaft "prpProp1" sind im "fblFblk1" ausprogrammiert, werden aber nicht an "fblFblk2" vererbt. Dort sind die Methoden leer.
 
Habe die Frage mittlerweile selbst beantworten können. Die Vererbung funktioniert schon, aber beim Anlegen eines neuen FB werden von Interfaces stammende Eigenschaften automatisch neu angelegt. Man muss sie wieder löschen, um ihre Set/Get-Methoden vom Vorgänger-FB zu erben.
Ob das sinnvoll ist, sei dahingestellt. Warum sollten gerade solche Eigenschaften typischerweise überschrieben werden?
 
Habe die Frage mittlerweile selbst beantworten können. Die Vererbung funktioniert schon, aber beim Anlegen eines neuen FB werden von Interfaces stammende Eigenschaften automatisch neu angelegt. Man muss sie wieder löschen, um ihre Set/Get-Methoden vom Vorgänger-FB zu erben.
Ob das sinnvoll ist, sei dahingestellt. Warum sollten gerade solche Eigenschaften typischerweise überschrieben werden?

Ich denke es ist sinnvoll, um das Konzept der Polymorhie konsequent umzusetzen. Dadurch, dass Du das Interface in deinem abgeleiteten FB mit dem Schlüsselwort implements integrierst wird davon ausgegangen, dass Du die Methode/Eigenschaft neu(anders) implementieren willst.

So verstehe ich es jedenfalls ohne damit je groß gearbeitet zu haben.

Gruß

dummy
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich denke es ist sinnvoll, um das Konzept der Polymorhie konsequent umzusetzen. Dadurch, dass Du das Interface in deinem abgeleiteten FB mit dem Schlüsselwort implements integrierst wird davon ausgegangen, dass Du die Methode/Eigenschaft neu(anders) implementieren willst.
Wenn zwei voneinander unabhängige FB's das selbe Interface implementieren, muss das so sein. Wenn aber ein FB ein Interface nicht implementiert, sondern die Implementierung von einem anderen FB erbt, sollte nach meiner Meinung die Entwicklungsumgebung zunächst davon ausgehen, dass nicht überschrieben wird. Bei Methoden macht sie das ja schliesslich auch.
 
Zurück
Oben