ABAP Keyword Documentation → ABAP - Reference → Declarative statemnts → Classes and Interfaces → Components in Classes and Interfaces → Implementing and including interfaces → INTERFACES
INTERFACES - ABSTRACT, FINAL, DATA VALUES
Other versions: 7.31 | 7.40 | 7.54
Syntax
INTERFACES intf
{ {[ABSTRACT METHODS meth1 meth2 ... ]
[FINAL METHODS meth1 meth2 ... ]}
| [ALL METHODS {ABSTRACT|FINAL}] }
[DATA VALUES attr1 = val1 attr2 = val2 ...].
Extras
1. ... ABSTRACT METHODS meth1 meth2 ...
2. ... FINAL METHODS meth1 meth2 ...
3. ... ALL METHODS {ABSTRACT|FINAL}
4. ... DATA VALUES attr1 = val1 attr2 = val2 ...
Effect
In the public
visibility area,
the statement INTERFACES
implements the interface intf
in the class. Additions can also be defined to determine the properties of interface components in the class.
All local or global interfaces visible at this position can be specified for intf
.
The components of the interfaces become public components of the class after the implementation. An
interface component called comp
has the name intf~comp
in the class, where intf
is the name of the interface and the character
~ is the interface component selector. A class must implement all methods of the interface in its implementation part unless they are declared as abstract.
Notes
-
A class can implement any number of different interfaces. All of the interfaces implemented by a class
are of equal status. If one of the interfaces
intf
implemented in a class is a composite, for example, containing component interfaces, then these are implemented in the class irrespective of their nesting hierarchy like individual interfaces and their components are not called using the nameintf
but using the name of their component interface. Multiple use of the interace component selection in an identifier (such asintf1~intf2~comp
) is generally not supported. -
Each interface appears only once in a class and every interface component
comp
is always clearly accessible using theintf~comp
. When the components of an interface, if they are components of more than one interface, appear to be used more than once in a class, even they appear only once. -
If a class implements in its implementation part an
intf~...
method of a global interfaceintf
that is implemented withINTERFACES
and if it is not declared in the interface, then a warning is displayed in the syntax check. This type of method implementation is dead coding that cannot be executed and is to be removed. Classes become unusable with a syntax error if methods were later deleted from an implemented global interface, and which were implemented without class and had no values. An actual syntax error results when local interfaces are used.
Addition 1
... ABSTRACT METHODS meth1 meth2 ...
Addition 2
... FINAL METHODS meth1 meth2 ...
Effect
Using the additions ABSTRACT METHODS
and FINAL METHODS
,
the individual instance methods meth
of the interface are made either abstract
or final in the class to be implemented. The same rules apply as for the additions ABSTRACT
and FINAL
of the
METHODS statement. In particular, the whole class must be abstract if an interface method
is made abstract and no interface methods can be executed at the same time after ABSTRACT METHODS
and FINAL METHODS
.
Addition 3
... ALL METHODS {ABSTRACT|FINAL}
Effect
Instead of making individual interface methods in the class abstract or final you can, using the ALL METHODS {ABSTRACT|FINAL} addition, make all interface methods either abstract or final.
Addition 4
... DATA VALUES attr1 = val1 attr2 = val2 ...
Effect
With the DATA VALUES
addition, you can assign initial values to individual
attributes attr
. For instance attributes, this addition fulfills the same
functions as the addition VALUE
of the statement
DATA for attributes in its own class. Constants declared in the interface by the statement
CONSTANTS
cannot be specified after the addition DATA VALUES
. Furthermore, it is not currently possible to specify
alias names.
Note
To specify values for the interface attributes of the
component interfaces
of a compound interface, the component interface must currently be directly bound again using the INTERFACES
statement.