SAP ABAP OO

全局class和interface的方法可以被单独传送。

Abstract class不能被instantiate,其方法不能被implement,而必须在subclass中redefine。Abstract class的指针可以指向其subclass。可以在create object中指明创建那个子类的实例。

Abstract method的可以看作是其子类的特殊的interface。其必须在子类中redefine。具有一个以上的abstract method的类本身也是abstract。Constructor和static method不能被abstract。

Final class不能被继承,其方法自然也是final。Final method不能被sub class redefinition。Method不能既是final又是abstract。而类可以,这种情况表明这种类只有abstract部分可以被使用。

通过CREATE PUBLIC,CREATE PROTECTED和CREATE PRIVATE可以控制class可以被实例化的范围。利用CREATE PRIVATE和FINAL 可以实现singletom concept。通过class的static来创建实例然后通过class的public static component来指向这个实例,这样外部就可以访问这个实例了。

CLASS的friends可以访问的类的任何component,并可以在任何情况下创建类的实例,不管是使用了create public,create protected还是create private。Friendship是单向的。Friendship的继承:class的friend的子类全部都是该类的friend,而class的子类则不是class的friend的friend。

Persistent service用来实现OO的方式操作数据库中的数据。

理论上ABAP程序是和internal session中的数据和对象一块工作的,程序执行完毕这些数据和对象也就消失了,当需要把数据永久存储时就需要数据库操作了。ABAP OO数据库操作是通过OPEN SQL来实现的。为了永久保存ABAP OBJECT就引入了persistend service 的概念。R/3 basis release 610以后的版本就可以把ABAPOBJECT和他的属性存入到数据库并重新导入了。

Persistent class的objects是通过persistent service来管理的,它不需要语句CREATE OBJECT来实例化,而是用persistent service的方法来初始化的,在创建persistent class时同时会创建一个相应的类,称为class actor或agent,用来管理persistent class的对象。Persistent class必须有类似unique key的key attributes,persistent service用来保证不同persistent class objects内容的唯一性。

对于每一个persistent class,在class builder创建时cl_persistent都会创建另外两个类ca_persistent和cg_persistent。Ca_class成为class actor,用来管理cl_persistent的对象,并在这里进行数据库访问。这个类继承于abstract super class cb_persistent。Ca_persistent可以扩展cb_persistent并重新定义它的方法。Ca_persistent是cl_persistent的friend,并具有属性CREATE PRIVATE,该类在第一次被访问时差生唯一的实例。Ca_persistent有一个静态reference属性AGENT,当使用这个属性时,ca_persistent的静态构造方法便会创建这个类的一个实例并将其赋给AGENT。这个实例是persistent service的一部分用来管理cl_persistent的对象。一个程序中只能产生一个ca_persistent的实例

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 小编费力收集:给你想要的面试集合 1.C++或Java中的异常处理机制的简单原理和应用。 当JAVA程序违反了JA...
    八爷君阅读 4,731评论 1 114
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,256评论 19 139
  • 1、面向对象的特征有哪些方面 1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标...
    michaelgong阅读 862评论 0 1
  • JAVA相关基础知识 1、面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以...
    yangkg阅读 685评论 0 1
  • 1.什么是抽象? 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打...
    爱学习的蹭蹭阅读 371评论 0 1