为什么ABAP将类划分为实现和定义?

时间:2016-03-11 12:53:51

标签: oop abap

我知道ABAP对象有点老了但据我所知,你仍然需要使用至少两个"部分"创建一个完整的类。

ABAP:

CLASS CL_MYCLASS DEFINITION.
    PUBLIC SECTION.
        ...
    PROTECTED SECTION.
        ...
    PRIVATE SECTION.
        ...
ENDCLASS.

CLASS CL_MYCLASS IMPLEMENTATION.
    ...
ENDCLASS.

爪哇:

public class MyClass {

    <visibility> <definition> {
        <implementation>
    }

}

通过像大多数现代语言一样结合这两种方式,它不会使开发变得更容易/更快吗?

这种分离的原因是什么?

2 个答案:

答案 0 :(得分:4)

对于人类(可能)更容易/更快,但编译器成本高昂:它必须筛选整个代码以确定类及其成员的结构,而在当前形式中,它只需要编译定义以确定引用是否有效。 ABAP不是唯一将定义与实现分开的语言:Pascal对单位执行此操作,对Object Pascal执行此类操作。有人可能会争辩说,当你不使用内联成员函数声明时,C ++允许相同的构造而不指定实现部分。

答案 1 :(得分:0)

也许是另一个原因:

大多数(?)类不是使用手动编写的代码定义的,而是通过SE24定义的。在那里,您可以在一个dynpro中定义接口,并将代码写入另一个。

在内部,接口存储在一个源中,代码存储在另一个源中。因此,将接口和实现分开是合理的。