当前位置: 首页 > news >正文

[SAP ABAP] 面向对象程序设计-类和对象

面向对象开发的特点:封装、继承和多态

什么是类和对象?

类(CLASS)是创建对象的模板,对象(OBJECT)是类的实例 

一个类可以创建多个对象
类  =>  类型
对象  =>  个体

在ABAP语言中,定义一个类,需要包含定义(definition) 和 实现(implementation)两部分

语法格式

* 定义类
CLASS <class> DEFINITION....
ENDCLASS.* 实现类
CLASS <class> IMPLEMENTATION....
ENDCLASS.

提示Tips

完整的class代码包含定义(definition) 和实现(implementation)两部分

定义(definition)部分声明该类包含的 attributes属性, methods方法 和 constructors事件

实现(implementation)部分用来实现 constructor 和 method 的逻辑

类的优点:① 可以进行数据封装  ② 可以重复调用代码 

ABAP支持 local class(本地类) 和 global class(全局类)

local class 通过事务码 SE38/SE80 创建,只能在程序中定义并在该程序中使用

global class 通过事务码 SE24 来创建,在所有的ABAP程序中都能使用

示例1:定义一个 Book 类,Book 类有 Title、Author、Publisher 和 Price 四个属性

REPORT z437_test_2024.*----------------------------------------------------------------------*
*  CLASS book DEFINITION
*----------------------------------------------------------------------*
CLASS book DEFINITION.PUBLIC SECTION.DATA: title TYPE string,author TYPE string,publisher TYPE string,price TYPE p DECIMALS 2.METHODS: print_info.
ENDCLASS.*----------------------------------------------------------------------*
*  CLASS book IMPLEMENTATION
*----------------------------------------------------------------------*
CLASS book IMPLEMENTATION.METHOD print_info.WRITE: / 'Title:', title,/ 'Author:', author,/ 'Publisher:', publisher,/ 'Price:', price.ENDMETHOD.
ENDCLASS.START-OF-SELECTION." 定义引用类型的变量DATA: book1 TYPE REF TO book,book2 TYPE REF TO book." 创建book的实例CREATE OBJECT book1.book1->title = '活着'.book1->author = '余华'.book1->publisher = '上海文艺出版社'.book1->price = '39.5'." 创建book的实例CREATE OBJECT book2.book2->title = '人间失格'.book2->author = '太宰治'.book2->publisher = '作家出版社'.book2->price = '18.8'.book1->print_info( ).book2->print_info( ).

输出结果:

上面示例1通过 DATA 定义的属性为实例属性,在 ABAP 中我们可以使用 -> 符号调用对象实例的属性或方法

类创建对象的过程称为实例化
类创建的对象称为实例( Instance)
http://www.lryc.cn/news/478647.html

相关文章:

  • 『大模型笔记』IBM技术团队:什么是智能体型RAG!
  • WPF 中 NavigationWindow 与 Page 的继承关系解析
  • WebRTC基础理论和通话原理
  • NPU 可不可以代替 GPU
  • Vue3版本的uniapp项目运行至鸿蒙系统
  • 部署stable-diffusion3.5 大模型,文生图
  • 数据采集之selenium模拟登录
  • 机器学习中的两种主要思路:数据驱动与模型驱动
  • 【计算机网络】TCP协议面试常考(一)
  • C#/.NET/.NET Core学习路线集合,学习不迷路!
  • 使用哈希表做计数排序js
  • 京津冀自动驾驶技术行业盛会|2025北京自动驾驶技术展会
  • Chrome与火狐哪个浏览器的隐私追踪功能更好
  • 探索 Python 图像处理的瑞士军刀:Pillow 库
  • JavaScript中的if、else if、else 和 switch
  • Python 使用 langchain 过程中的错误总结
  • MySQL基础篇总结
  • 全面解析:网络协议及其应用
  • 一文了解Java序列化
  • 【前端基础】CSS基础
  • Linux之selinux和防火墙
  • 架构零散知识点
  • 【从零开始的LeetCode-算法】3254. 长度为 K 的子数组的能量值 I
  • 跨IDE开发
  • 2020年美国总统大选数据分析与模型预测
  • C++应用场景开发——学生信息管理系统!!!
  • Pytorch实现transformer语言模型
  • Java后台生成指定路径下创建指定名称的文件
  • sqlcoder70b模型,如果需要训练或者微调需要什么样的GPU机器
  • 【Python实战案例】爬虫项目实例(附赠源码)