Interface privat

Die Objektorientierung mit ABAP®: Vererbung, Dynamische Programmierung, GUI Controls (u.a. ALV im OO).
12 Beiträge • Seite 1 von 1
12 Beiträge Seite 1 von 1

Interface privat

Beitrag von ralf.wenzel (Top Expert / 3921 / 200 / 280 ) »
Moin moin,

gegeben sei ein Interface und eine Klasse, die dieses Interface implementiert. Ich finde keine Möglichkeit, die Sichtbarkeit einzustellen (weder bei den Komponenten des Interfaces noch in der Klasse, wo ich das Interface implementieren will).

Hintergrund: Ich habe eine Reihe von privaten Attributen und eine Reihe öffentlicher SET-/GET-Methoden dazu. Das will ich in einem Interface zusammenfassen.

Bin ich nur blind oder geht das wirklich nicht???
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: Interface privat

Beitrag von zzcpak (Expert / 673 / 5 / 68 ) »
**blödsinn** gelöscht

Re: Interface privat

Beitrag von Thanatos82 (Expert / 699 / 32 / 123 ) »
Hi,

ich meine mich zu erinnern, dass Interface-Methoden grundsätzlich als öffentliche Schnittstellen genutzt werden und das Klassen, die ein Interface nutzen über diese öffentlichen Schnittstellen angesprochen werden sollen/können. Daher denke ich, dass du das nicht "privatisieren" kannst.
Gruß,
der Matze

Re: Interface privat

Beitrag von ralf.wenzel (Top Expert / 3921 / 200 / 280 ) »
Thanatos82 hat geschrieben:Hi,

ich meine mich zu erinnern, dass Interface-Methoden grundsätzlich als öffentliche Schnittstellen genutzt werden und das Klassen, die ein Interface nutzen über diese öffentlichen Schnittstellen angesprochen werden sollen/können. Daher denke ich, dass du das nicht "privatisieren" kannst.
Ich will ja nur die Attribute "privatisieren" ;)
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Interface privat

Beitrag von Thanatos82 (Expert / 699 / 32 / 123 ) »
Hi,

sorry hab ich nicht ganz mitgeschnitten. :D

Wenn du dein Interface anlegst und dort die Attribute definierst, musst du als Art "Instance Attribute" wählen. Damit ist dieses Attribut dann privat. :)
Gruß,
der Matze

Re: Interface privat

Beitrag von ralf.wenzel (Top Expert / 3921 / 200 / 280 ) »
Das kann ich so nicht bestätigen.... Bei mir ist das automatisch public und das lässt sich auch nicht ändern.
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Interface privat

Beitrag von ST22 (Specialist / 279 / 43 / 41 ) »
Hi Ralf,

Hier steht es:
http://help.sap.com/saphelp_nw70/helpda ... ontent.htm
"da die Komponenten von Interfaces bei ihrer Implementierung im öffentlichen Bereich der Klasse immer die öffentlichen Komponenten der Klasse erweitern"

Gruß

Folgende Benutzer bedankten sich beim Autor ST22 für den Beitrag:
ralf.wenzel


Re: Interface privat

Beitrag von ralf.wenzel (Top Expert / 3921 / 200 / 280 ) »
Super - kein Wunder, dass gestandene Java-Programmierer immer noch lächeln, wenn Sie "ABAP" und "Programmiersprache" im selben Satz hören....
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Interface privat

Beitrag von Thanatos82 (Expert / 699 / 32 / 123 ) »
Wenn du die Attribute eines vorhandenen Interfaces meinst, dann stimmt das, die bleiben so.
Ich meinte aber, wenn du ein eigenes interface anlegst und dort ein Attribut als INSTANCE ATTRIBUTE deklarierst, dann wird es beim hinzufügen dieses Interfaces zu einer Klasse als Privat deklariert für die Sichtbarkeit.
Habe das gerade mal in der se24 ausprobiert und bei mir klappt das so. :roll:
Gruß,
der Matze

Re: Interface privat

Beitrag von a-dead-trousers (Top Expert / 4395 / 223 / 1182 ) »
Thanatos82 hat geschrieben:Wenn du die Attribute eines vorhandenen Interfaces meinst, dann stimmt das, die bleiben so.
Ich meinte aber, wenn du ein eigenes interface anlegst und dort ein Attribut als INSTANCE ATTRIBUTE deklarierst, dann wird es beim hinzufügen dieses Interfaces zu einer Klasse als Privat deklariert für die Sichtbarkeit.
Habe das gerade mal in der se24 ausprobiert und bei mir klappt das so. :roll:
Ich kenn das nur vom ALIAS. Das Attribut selbst (Interface~Attribut) bleibt dabei aber weiterhin PUBLIC.

Ich glaube hier liegt allgemein ein Denkfehler vor:
Interfaces dienen dazu eine SCHNITTSTELLE zu definieren (das heißt Interface übrigens übersetzt). Was für einen Sinn hat es da, das Interface PRIVATE oder PROTECTED zu machen? Dafür brauche ich ja dann kein Interface. Ich will damit die "normale" Vererbung sowieso verlassen und als Aufrufer nur die Methoden und Attribute verwenden die das Interface mir bietet. Wie diese implementiert sind, ist Nebensache (Black-Box)
Mir ist außerdem auch kein Interface oder Mechanismus in JAVA bekannt bei dem so etwas möglich wäre.

Wenn die Attribute NICHT SICHTBAR sein sollen, dann dürfen sie einfach nicht Teil des Interfaces sein. Dafür sind ja dann sowieso die GET- und SET-Methoden zuständig.
Wenn es darum geht (ich beziehe mich hier auf unsere Diskussion vor ca. einer Wochen), dass die Attribute "geschützt" werden müssen, sprich nicht ohne die SET-Methoden bearbeitet werden dürfen, dann reicht es sie als READ-ONLY zu setzen. Damit dürfen sie dann nur innerhalb der Klasse (und ihren Ableitungen) verändert werden, nicht jedoch von "außerhalb".

lg ADT
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Interface privat

Beitrag von ralf.wenzel (Top Expert / 3921 / 200 / 280 ) »
Ich bin mir durchaus bewusst, was "Interface" auf deutsch heißt. Der Punkt ist aber, dass die SET-/GET-Methoden ohne die Attribute keinen Sinn machen, darum will ich die in einem
"Paket" in die Klasse einbinden.

Ich werde mir wohl mit READ-ONLY behelfen müssen....
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Interface privat

Beitrag von a-dead-trousers (Top Expert / 4395 / 223 / 1182 ) »
ralf.wenzel hat geschrieben:Der Punkt ist aber, dass die SET-/GET-Methoden ohne die Attribute keinen Sinn machen, darum will ich die in einem
"Paket" in die Klasse einbinden.
Nicht unbedingt!
Die Klasse(n) die dein Interface implementieren können ja auch NUR über die GET und SET Methoden kommunizieren.

INTF~SET_X( X = '123' ).
INTF~SET_Y( Y = '456' ).
Z = INTF~ADDITION( ).

Und in ADDITION:
RESULT = INTF~GET_X( ) + INTF~GET_Y( ).

Ich hoffe du verstehst worauf ich hinaus will. ;)

lg ADT
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Seite 1 von 1

Vergleichbare Themen

3
Antw.
485
Views
Interface
von Star_ABAP » 08.01.2023 17:16 • Verfasst in ABAP® für Anfänger
3
Antw.
2131
Views
Interface erweitern
von PeterPaletti » 04.02.2015 16:35 • Verfasst in ABAP® für Anfänger
1
Antw.
1161
Views
Interface Adviser
von Chiquita » 05.01.2005 14:19 • Verfasst in SAP - Allgemeines
3
Antw.
2015
Views
Klassen mit bestimmten Interface
von Cola » 05.10.2006 11:00 • Verfasst in ABAP Objects®
1
Antw.
1546
Views
Objekt implementiert Interface?
von Thomas R. » 12.12.2019 08:15 • Verfasst in ABAP Objects®

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Unbeantwortete Forenbeiträge

Daten an Tabelle binden
vor 6 Stunden von Bright4.5 1 / 136
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 1777
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8379