Ansicht
Dokumentation

ABENINSTANCE_CONSTRUCTOR_GUIDL - INSTANCE CONSTRUCTOR GUIDL

ABENINSTANCE_CONSTRUCTOR_GUIDL - INSTANCE CONSTRUCTOR GUIDL

ABAP Short Reference   PERFORM Short Reference  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

Instanzkonstruktor

Bei der Definition einer ABAP-Klasse wird angegeben, wer eine Instanz dieser Klasse erzeugen bzw. wer auf den Instanzkonstruktor der Klasse zugreifen darf. Hierzu dient der Zusatz CREATE zur Anweisung CLASS ... DEFINITION. Der Zusatz CREATE PUBLIC entspricht der Standardeinstellung und erlaubt die Instanziierung durch jeden Verwender der Klasse. Durch die Angabe von CREATE PROTECTED kann die Objekterzeugung auf die Klasse selbst und ihre Unterklassen eingeschränkt werden. Mit dem Zusatz CREATE PRIVATE können Objekte nur durch die Klasse selbst erzeugt werden. Die Einschränkung der Objekterzeugung auf die Klasse selbst ist beispielsweise im Zusammenhang mit dem Singleton-Entwurfsmuster sinnvoll, bei dem die Klasse selbst die Objekterzeugung übernimmt.

Der Instanzkonstruktor kann technisch gesehen mit der Anweisung METHODS constructor in allen Sichtbarkeitsbereichen deklariert werden, die allgemeiner oder gleich der im CREATE-Zusatz der Anweisung CLASS ... DEFINITION angegebenen Instanziierbarkeit sind. Die tatsächliche Sichtbarkeit wird aber durch den CREATE-Zusatz gesteuert.

Instanzkonstruktor von globalen Klassen im öffentlichen Sichtbarkeitsbereich deklarieren

Deklarieren Sie den Instanzkonstruktor einer globalen Klasse stets in deren öffentlichem Sichtbarkeitsbereich und unabhängig von der durch den CREATE-Zusatz bei der Klassendefinition festgelegten Instanziierbarkeit.

Die Komponenten globaler Klassen werden intern getrennt nach der Zugehörigkeit zu den verschiedenen Sichtbarkeitsbereichen abgelegt. Je nach der Verwendungsart der Klasse werden bei der Kompilation nur Teile der Klasse vom ABAP Compiler berücksichtigt. Dieses Verfahren setzt voraus, dass der Konstruktor einer globalen Klasse stets im öffentlichen Sichtbarkeitsbereich der Klasse deklariert ist. Technisch bedingt soll daher der Instanzkonstruktor einer globalen Klasse stets im öffentlichen Sichtbarkeitsbereich (PUBLIC SECTION) deklariert werden. Wird er in einem anderen Sichtbarkeitsbereich deklariert, kann es in Einzelfällen zu unberechtigten Syntaxfehlern bei der Verwendung der globalen Klasse kommen.

Ausnahme

Die genannten technischen Einschränkungen gelten nur für die Verarbeitung globaler Klassen. Innerhalb von lokalen Klassen kann der Instanzkonstruktor auch in einem anderen Sichtbarkeitsbereich definiert werden und die Positionierung soll dem über den Zusatz CREATE angegebenen Sichtbarkeitsbereich entsprechen. Durch ein solches Vorgehen können in der Schnittstelle des Instanzkonstruktors einer lokalen Klasse auch Typen verwendet werden, die nur in diesem eingeschränkten Sichtbarkeitsbereich zugänglich sind.






CPI1466 during Backup   BAL_S_LOG - Application Log: Log header data  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 3153 Date: 20240523 Time: 173925     sap01-206 ( 69 ms )