为什么ABAP要把类分成实现和定义?

Why does ABAP divide classes into implementation and definition?

我知道 ABAP 对象有点旧,但据我所知,您仍然必须至少使用两个 "sections" 才能创建完整的 class。

ABAP:

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

CLASS CL_MYCLASS IMPLEMENTATION.
    ...
ENDCLASS.

Java:

public class MyClass {

    <visibility> <definition> {
        <implementation>
    }

}

它不会像大多数现代语言那样通过将两者结合来促进发展easier/faster吗?

这次分开的原因是什么?

Easier/faster 对于人类(可能),但对于编译器来说代价高昂:它必须筛选整个代码以确定 class 及其成员的结构,而在当前形式,它只需要编译定义来确定引用是否有效。 ABAP 不是唯一将定义与实现分开的语言:Pascal did so for units, and Object Pascal for classes。有人可能会争辩说,当您不使用内联成员函数声明时,C++ 允许在不指定实现部分的情况下使用相同的构造。

可能还有其他原因:

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

在内部,接口存储在一个源中,代码存储在另一个源中。所以分离接口和实现是合理的。