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

ABAP开发-面向对象开发_2

系列文章目录


文章目录

  • 系列文章目录
    • @[TOC](文章目录)
  • 前言
  • 接口和类
    • 1、首先创建一个接口
    • 2、在创建的接口的基础上创建一个类PERSON
    • 3、创建子类STUDENT
    • 4、创建子类TEACHER
    • 5、SE38使用创建的类
  • 总结

前言


接口和类

全局类
SE24 创建一个接口-》创建一个实现接口的类-》再创建两个子类-》SE38 使用创建的类

1、首先创建一个接口

TCODE:SE24
在这里插入图片描述
在这里插入图片描述
定义属性,其中,级别:Instance Attribute–实例属性,Static Attribute–静态属性,Constant常量
在这里插入图片描述
在这里插入图片描述
定义方法
在这里插入图片描述
只定义方法还不够,若某方法需要传入参数传出参数等,则点击某方法,再点击”参数“,如下
在这里插入图片描述
若是设传入参数,则类型选IMPORTING;
另:Exporting传出参数,Changing改,Returning返回
在这里插入图片描述
同样的,GET_ID方法则需要返回一个值,也给他设置参数
在这里插入图片描述
填入参数,类型(类型就选Returning),关联类型
在这里插入图片描述
同样的,为set_name和get_name设置参数,如下
在这里插入图片描述
在这里插入图片描述
最后,检查-》激活-》保存

2、在创建的接口的基础上创建一个类PERSON

在这里插入图片描述
填写描述,取消勾选”最终“(若可能会被用到就不勾,若不会再被用到就勾上“最终”)
在这里插入图片描述
点击“接口”选择卡,填入我们上面创建的接口ZIF_YT36_PERSON_36130
在这里插入图片描述
回车,此时会带出来描述–人接口、属性、方法
可以看到,属性和方法都是pubilc公开的(因为是接口里面定义的,接口里面定义的都是可见的,因为接口里面的属性和方法就是要让被使用)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
点击检查后,会有很多警告,是因为还没实现这些方法
在这里插入图片描述
此时,要实现各个方法,就要双击各方法,去编写程序
双击ZIF_YT36_PERSON_36130~SET_ID
在这里插入图片描述

  method ZIF_YT36_PERSON_36130~SET_ID.
ZIF_YT36_PERSON_36130~ID = IV_ID."用传入的ID给接口属性赋值endmethod.

检查-》激活
再编写GET_ID方法,检查-》激活

  method ZIF_YT36_PERSON_36130~GET_ID.RV_ID = ZIF_YT36_PERSON_36130~ID ."返回接口属性里的值endmethod.

同样的,编写SET_NAME,检查-》激活

  method ZIF_YT36_PERSON_36130~SET_NAME.
ZIF_YT36_PERSON_36130~NAME = IV_NAME."传入的参数iv_name给接口赋值endmethod.

编写GET_NAME,检查-》激活

  method ZIF_YT36_PERSON_36130~GET_NAME.RV_NAME = ZIF_YT36_PERSON_36130~NAME.endmethod.

再在类里加一个方法GET_FULL_NAME,此时,是可以选可见性的,而不是像在接口里的方法那样都是public
在这里插入图片描述
给该方法定义参数
在这里插入图片描述
填入参数、类型、关联类型
在这里插入图片描述
点击源代码,就可以进到实现该方法的程序里面,编写程序

method GET_FULL_NAME.RV_FULLNAME =  ZIF_YT36_PERSON_36130~ID && ':' &&  ZIF_YT36_PERSON_36130~NAME.endmethod.

3、创建子类STUDENT

(1)
在这里插入图片描述
在这里插入图片描述
点击属性-》超类(SUPER CLASS)
在这里插入图片描述
填写超类,即创建的第一个类ZCL_YT36_PERSON_36130,保存
在这里插入图片描述
保存后就可以看到从父类继承过来的属性和方法,如下:
在这里插入图片描述
在这里插入图片描述
这时如果双击各个方法,就会弹出该方法是在父类中实施的
在这里插入图片描述
(2)
如果想在GET_FULL_NAME中实现一些student子类中的独特方法,则点击GET_FULL_NAME->再点击“重新定义方法”
在这里插入图片描述

  method GET_FULL_NAME.
"先调父类里面的方法GET_FULL_NAME
CALL METHOD SUPER->GET_FULL_NAMERECEIVING"父类的方法有个return,所以用recive来接收RV_FULLNAME = RV_FULLNAME."第一个RV_FULLNAME 是父类里面的参数,第二个 RV_FULLNAME是这个方法里要返回的参数RV_FULLNAME = '学生' && RV_FULLNAME.   endmethod.

然后检查-》激活

若不想要重定义的方法了,就点击该方法-》点击撤消重定义
在这里插入图片描述
(3)若想再在这个STUDENT类中加一些属于自己的属性和方法
属性:
在这里插入图片描述
方法:并设置参数
在这里插入图片描述
传入参数设好后,再点源代码
在这里插入图片描述

  method SET_SCORE.SCORE = IV_SCORE."传入参数给该STUDENT类的属性SCORE赋值endmethod.

在这里插入图片描述
在这里插入图片描述

4、创建子类TEACHER

在这里插入图片描述
同样的,点击超类,输入类PERSON,保存
在这里插入图片描述
重定义GET_FULL_NAME

  method GET_FULL_NAME.
CALL METHOD SUPER->GET_FULL_NAMERECEIVINGRV_FULLNAME = RV_FULLNAME.RV_FULLNAME = '老师' && RV_FULLNAME.endmethod.

添加属性–工资GONGZI
在这里插入图片描述
添加方法–SET_GONGZI,GET_GONGZI
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

`在这里插入代码片`  method SET_GONGZI.
GONGZI = IV_GONGZI.endmethod.
  method GET_GONGZI.RV_GONGZ = GONGZI.endmethod.

添加方法–GET_HOLIDAY
在这里插入图片描述
并添加参数,设一个返回值
在这里插入图片描述

添加源代码

  method GET_HOLIDAY.RV_HOLIDAY = '教师节'.endmethod.

5、SE38使用创建的类

在这里插入图片描述
在这里插入图片描述
编写程序,点击模式
在这里插入图片描述
选择ABAP对象模式
在这里插入图片描述
填上实例,类/接口,方法,点击确定
在这里插入图片描述
则代码中就会自动出现一个模式,我们只需填入参数
在这里插入图片描述
同样的,调用GET方法
在这里插入图片描述
在这里插入图片描述
检查激活执行,执行结果如下:
在这里插入图片描述
除了点模式自动生成调用方法,也可以按如下语法来自己写(不用点模式)

*2、创建学生1
*要求创建学生
*调用SET ID/GET ID/SET_NAME/GET_FULLNAME/SET_SCORE/GET_SCORE ,可以向上面一样,点模式(call method),也可以不点模式,按如下语法写
*输出学生ID/FULLNAME/SCOREDATA: LO_STU1 TYPE REF TO zcl_yt36_STUDENT_36130.
CREATE OBJECT LO_STU1."实例化LO_STU1->ZIF_YT36_PERSON_36130~set_id( iv_id = 1 ).
DATA(LV_SID1) = LO_STU1->ZIF_YT36_PERSON_36130~Get_id( )."定义一个变量LV_SID1来接收返回值
WRITE: / '学生ID是:',LV_SID1.LO_STU1->ZIF_YT36_PERSON_36130~SET_NAME( IV_NAME = 'STU 1').
DATA(LV_STU_NAME1) = LO_STU1->GET_FULL_NAME( ).
WRITE: / '学生名字是:',LV_STU_NAME1.LO_STU1->SET_SCORE( IV_SCORE = 100 ).
WRITE: / '成绩:',LO_STU1->GET_SCORE( ).

另外,多态和接口

*3、多态
DATA: LO_PERSON3 TYPE REF TO ZCL_YT36_PERSON_36130."用父类定义一个对象
CREATE OBJECT LO_PERSON3 TYPE ZCL_YT36_TEACHER_36130."创建对象的时候,指定一个子类的类型
WRITE: / LO_PERSON3->GET_FULL_NAME( )."调用的是老师的FULL_NAME,因为创建对象的时候,指定的子类的类型是TEACHER
"多态:根据创建对象的类型不同,调用不同的方法实现DATA: LO_PERSON4 TYPE REF TO ZCL_YT36_PERSON_36130."用父类定义一个对象
CREATE OBJECT LO_PERSON4 TYPE ZCL_YT36_STUDENT_36130."创建对象的时候,指定一个子类的类型
WRITE: / LO_PERSON4->GET_FULL_NAME( )."调用的是学生的full_name,因为创建对象的时候,指定的子类的类型是STUDENT
"LO_PERSON4->GET_SCORE( )."因为我们用 ZCL_YT36_PERSON_36130定义的对象,所以没办法访问子类特殊的方法和属性
"不可以这样写,因为定义的时候ref to ZCL_YT36_PERSON_36130,PERSON里面有哪个方法,才可以调用哪个方法,person里没有GET_SCORE
"虽然创建对象的时候,指定的子类型是STUDENT,但是能调用哪些方法是由定义的时候REF TO来决定的
"而创建对象指定的子类型决定的是调用的方法具体走到哪个实现的类,53行*使用接口
DATA: LO_INTERFACE TYPE REF TO ZCL_YT36_PERSON_36130.
CREATE OBJECT LO_INTERFACE TYPE ZCL_YT36_STUDENT_36130.LO_INTERFACE->SET_NAME( IV_NAME = '接口调用' ).
WRITE: / LO_INTERFACE->GET_NAME( )."LO_INTERFACE->GET_FULL_NAME( )."因为LO_INTERFACE 是用接口定义的,这里面只能访问接口中包含的方法

执行结果如下:
在这里插入图片描述


总结

相关文章:

ABAP开发-面向对象开发_2

系列文章目录 文章目录 系列文章目录[TOC](文章目录) 前言接口和类1、首先创建一个接口2、在创建的接口的基础上创建一个类PERSON3、创建子类STUDENT4、创建子类TEACHER5、SE38使用创建的类 总结 前言 接口和类 全局类 SE24 创建一个接口-》创建一个实现接口的类-》再创建两个…...

微信小程序-prettier 格式化

一.安装prettier插件 二.配置开发者工具的设置 配置如下代码在setting.json里: "editor.formatOnSave": true,"editor.defaultFormatter": "esbenp.prettier-vscode","prettier.documentSelectors": ["**/*.wxml"…...

241118学习日志——[CSDIY] [ByteDance] 后端训练营 [06]

CSDIY:这是一个非科班学生的努力之路,从今天开始这个系列会长期更新,(最好做到日更),我会慢慢把自己目前对CS的努力逐一上传,帮助那些和我一样有着梦想的玩家取得胜利!!&…...

Android WMS概览

WMS(WindowManagerService)是 Android 系统的核心服务,负责管理应用和系统的窗口,包括窗口的创建、销毁、布局、层级管理、输入事件分发以及动画显示等。它通过协调 InputManager 和 SurfaceFlinger 实现触摸事件处理和窗口渲染&a…...

新一代API开发工具,让API调试更快 更简单

新一代API开发工具 代理调试 请求测试一站式解决方案 Reqable Fiddler Charles Postman, 让API调试更快 🚀 更简单 👌 直接上下载地址 根据系统,下载对应的版本即可 https://reqable.com/zh-CN/download/...

友元类和友元函数

友元函数的定义: 友元函数是在类定义中被声明为 “朋友” 的非成员函数。它可以访问类的私有成员和保护成员(变量和方法),就好像它是类的成员函数一样。友元函数的声明以friend关键字开头,在类的内部进行声明,但它的定义在类的外部&#xff…...

Sulfo-Cy5-Iodoacetamide能够发出明亮的荧光信号,使得生物样本的精细结构得以清晰呈现

一、基本信息 英文名称:Sulfo-Cy5-Iodoacetamide,Sulfo-Cyanine5-Iodoacetamide,Sulfo Cy5 IA 中文名称:磺酸Cy5碘乙酰胺 分子式:C36H44IKN4O8S2 分子量:890.89 纯度:≥95% 外观&#xff…...

Python中的TCP

文章目录 一. 计算机网络1. 网络的概念2. IP地址① IP地址的概念② IP地址的表现形式③ IP地址的作用④ 网络查询命令Ⅰ. ifconfig/ipconfigⅡ. ping 3. 端口和端口号的概念(计算机通信原理)① 端口的概念② 端口号的概念 4. socket套接字① socket概念② socket使用场景 二. T…...

CSS(8)高级技巧:精灵图,css三角,用户界面,vertical-align属性应用

一.精灵图 通过css中的background-position属性,将多张图合成为一张图 二.css三角 在网页中,我们可以添加css属性获得三角图标 solid:实心,边框的实心 transparent:透明,图中代码表示只有左边粉色,其余地方为透明 三&#xff…...

Flink新版Source接口源码解析

目录 1. 前言 2. Source解析 2.1 Source类图 2.2 接口和方法说明 2.2.1 Source,> 3. SplitEnumerator解析 3.1 SplitEnumetator类图 3.2 类和方法说明 3.2.1 SplitEnumerator 3.2.2 SimpleVersionedSerializer 4. SourceReader解析 4.1 SourceReader类图 4.2 类…...

SLM561A系列60V10-50mA单通道线性恒流LED驱动芯片,为汽车照明、景观照明助力

SLM561A系列选型参考: SLM561A10ae-7G SOD123 SLM561A15ae-7G SOD123 SLM561A20ae-7G SOD123 SLM561A25ae-7G SOD123 SLM561A30ae-7G SOD123 SLM561A35ae-7G SOD123 SLM561A40ae-7G SOD123 SLM561A45ae-7G SOD123 SLM561A50ae-7G SOD123 S…...

一次失败的wxpython安装macOS M1

WARNING: The scripts libdoc, rebot and robot are installed in /Users/用户名/Library/Python/3.8/bin which is not on PATH. 背景:想在macos安装Robot Framework ,显示pip3不是最新,更新pip3后显示不在PATH上 参看博主文章末尾 MAC系统…...

【大数据技术基础 | 实验十一】Hive实验:新建Hive表

文章目录 一、实验目的二、实验要求三、实验原理四、实验环境五、实验内容和步骤(一)启动Hive(二)创建表(三)显示表(四)显示表列(五)更改表(六&am…...

【yarn】yarn rest api每日job数量分析

一、说明 # 无法制定时间范围!!! yarn application -list 官方文档 rest返回内容(官网案例): {app":{"id":"application_1324057493980_0001","user":"user1&q…...

蓝桥杯单片机第十一届省赛(第一场)

主函数代码 #include<iic.h> #include<intrins.h>sfr P40xc0; sbit R3P3^2; sbit R4P3^3; sbit C4P3^4; sbit C3P3^5;unsigned char code led_nodot[]{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; unsigned char code led_dot[]{0x40,0x79,0x24,0x30,0x…...

hive复杂数据类型Array Map Struct 炸裂函数explode

1、Array的使用 create table tableName( ...... colName array<基本类型> ...... ) 说明&#xff1a;下标从0开始&#xff0c;越界不报错&#xff0c;以null代替 arr1.txtzhangsan 78,89,92,96 lisi 67,75,83,94 王五 23,12 新建表&#xff1a; create table arr1(n…...

FIFO架构专题-FIFO是什么

目录 简介&#xff1a; FIFO参数&#xff1a; 1.宽度WIDTH&#xff08;一次位数&#xff09; 2.深度DEEPTH&#xff08;存多少次&#xff09; FIFO的分类&#xff1a; 同步FIFO 异步FIFO 读写位宽不同的FIFO FIFO信号介绍 写时钟 写数据 写使能 读时钟 读数据 读…...

Pythony——多线程简单爬虫实现

简单爬虫实现 import requests from bs4 import BeautifulSoup# 生成要爬取的网页地址列表&#xff0c;这里是博客园的分页地址&#xff0c;从第1页到第50页 urls [f"https://www.cnblogs.com/#p{i}" for i in range(1, 50 1)]# 生产者函数——负责下载网页内容 d…...

如何修改 a 链接的样式

在CSS中&#xff0c;你可以使用选择器来针对HTML中的特定元素&#xff08;例如<a>标签&#xff0c;也就是链接&#xff09;进行修改样式。以下是一些常见的修改<a>链接样式的方法&#xff1a; 移除下划线&#xff1a; a { text-decoration: none; } 修改链接的…...

第6章 详细设计-6.5 软硬件接口文档设计

6.5 软硬件接口文档设计 一般的产品都包含硬件和软件两部分&#xff0c;产品设计阶段需要确保硬件开发人员和软件开发的沟通准确、高效。所以需要一份书面的文档来承载软件和硬件之间的沟通细节。以下面的细水雾除尘设备为例进行讲解&#xff0c;涉及软件和硬件的接口&#xff…...

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

Oracle查询表空间大小

1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...

23-Oracle 23 ai 区块链表(Blockchain Table)

小伙伴有没有在金融强合规的领域中遇见&#xff0c;必须要保持数据不可变&#xff0c;管理员都无法修改和留痕的要求。比如医疗的电子病历中&#xff0c;影像检查检验结果不可篡改行的&#xff0c;药品追溯过程中数据只可插入无法删除的特性需求&#xff1b;登录日志、修改日志…...

线程与协程

1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指&#xff1a;像函数调用/返回一样轻量地完成任务切换。 举例说明&#xff1a; 当你在程序中写一个函数调用&#xff1a; funcA() 然后 funcA 执行完后返回&…...

关于nvm与node.js

1 安装nvm 安装过程中手动修改 nvm的安装路径&#xff0c; 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解&#xff0c;但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后&#xff0c;通常在该文件中会出现以下配置&…...

高频面试之3Zookeeper

高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个&#xff1f;3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制&#xff08;过半机制&#xff0…...

leetcodeSQL解题:3564. 季节性销售分析

leetcodeSQL解题&#xff1a;3564. 季节性销售分析 题目&#xff1a; 表&#xff1a;sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...

工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配

AI3D视觉的工业赋能者 迁移科技成立于2017年&#xff0c;作为行业领先的3D工业相机及视觉系统供应商&#xff0c;累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成&#xff0c;通过稳定、易用、高回报的AI3D视觉系统&#xff0c;为汽车、新能源、金属制造等行…...

在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?

uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件&#xff0c;用于在原生应用中加载 HTML 页面&#xff1a; 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...

【Linux】Linux 系统默认的目录及作用说明

博主介绍&#xff1a;✌全网粉丝23W&#xff0c;CSDN博客专家、Java领域优质创作者&#xff0c;掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围&#xff1a;SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...