【博主SAP/ABAP交流群53144545】
ABAP面向对象的一些总结,基本上和其他语言的OO差不多,先整理一些专用名字。
superclass:父类,基类,超类。
subclass:子类。
method:方法,相当于其他语言中的函数function,和ABAP的Function Module作用类似。
signature:方法参数。
constructor:构造函数,一种特殊的方法,类初始化时被执行。
instantiate:实例化,object是class的实例化。
overload:重载,一个类里多个同名的函数。
override:重写,子类重新改写父类里的同名函数,关键字Redefinition。
ABAP不支持方法的重载,即同一个类下不能有同名的方法,哪怕参数不同。
ABAP支持方法的重写,子类里可以通过redefinition关键字重写父类的同名方法。
若子类里不对父类的某方法进行重写,那子类实例调用该方法时会调用父类里的方法。
构造方法是一种特殊的方法,在create object时就执行,不能通过call method->constructor显示调用。
构造方法只能有输入参数和异常,无输出参数。
构造方法的实现可以在子类里重写,但在定义时不支持redefinition关键字。
子类里构造方法的实现里,必须先调用父类的构造方法。
子类里可以不定义构造方法,那样的话在程序里实例化时默认调用父类的构造方法。
构造方法允许子类和父类定义不同的参数,这点是和一般的方法是不同的。
静态变量和静态方法在程序运行时就存在,不需要实例化也可以使用。
静态方法里只能使用静态变量(但是静态变量可以被实例方法调用)。
静态方法不能在子类里重写。
class_constructor是静态构造方法。
静态构造方法不能显示调用,在程序运行时就执行。
静态构造方法没有参数。
常量(constant)的调用方法和静态变量相同。
抽象类不能被当前定义的类里实例化,只能在子类里被实例化(如果该子类不是抽象类)。
抽象类必须至少有一个抽象方法,且只是定义但不能被实现,只能在子类里通过Redefinition重写实现。
ABAP是单继承,子类只能继承一个父类,不能继承多个父类。