ABAP开发面向对象---类
今日学习ABAP面向对象里面的类,关于构造,继承,实现。
踩坑点:类有抽象的方法,类本身也需要是抽象的,故需要在类申明里面加上ABSTRACT关键字
学习资料为B站翱翔云天老师的
1 CLASS zcl_employee DEFINITION
2 PUBLIC
3 ABSTRACT
4 CREATE PUBLIC .
5
6 PUBLIC SECTION.
7 METHODS:
8 constructor IMPORTING firstname TYPE string
9 lastname TYPE string,
10 get_printname RETURNING VALUE(fullname) TYPE string,
11 earnings ABSTRACT RETURNING VALUE(earn) TYPE f,
12 print ABSTRACT.
13 PROTECTED SECTION.
14 data:first_name TYPE string,
15 last_name TYPE string.
16
17 PRIVATE SECTION.
18 ENDCLASS.
练习类的结构
父类:Employee 子类:Boss,PieceWorker,SalesPerson

Employee类

boss类
CLASS zcl_boss IMPLEMENTATION.
METHOD constructor.
CALL method super->constructor
EXPORTING
firstname = fn
lastname = ln.
weekly_salary = wl.
ENDMETHOD. METHOD set_weekly_salary.
weekly_salary = ws.
ENDMETHOD. METHOD earnings.
earn = weekly_salary * 4.
ENDMETHOD. METHOD print.
write:/,'My name is:', get_printname( ).
write:/,'My salary is:', me->earnings( ) DECIMALS 2 EXPONENT 0.
ENDMETHOD. ENDCLASS.
CLASS zcl_piece_worker DEFINITION
PUBLIC
INHERITING FROM zcl_employee
FINAL
CREATE PUBLIC . PUBLIC SECTION.
METHODS:
constructor IMPORTING fn TYPE string
ln TYPE string
wage TYPE f
quantity TYPE i, setwage IMPORTING wage TYPE f,
setquantity IMPORTING quantity TYPE i,
earnings REDEFINITION,
print REDEFINITION.
PROTECTED SECTION.
PRIVATE SECTION.
DATA: wagevalue TYPE f,
quantityValue TYPE i. ENDCLASS. PieceWorker类
CLASS zcl_piece_worker IMPLEMENTATION.
METHOD constructor.
CALL METHOD super->constructor
EXPORTING
firstname = fn
lastname = ln.
wagevalue = wage.
quantityValue = quantity.
ENDMETHOD. METHOD setwage.
wagevalue = wage.
ENDMETHOD. METHOD setquantity.
quantityValue = quantity.
ENDMETHOD. METHOD earnings.
earn = wagevalue * quantityValue.
ENDMETHOD. METHOD print.
WRITE:/,'my name is:', get_printname( ).
WRITE:/,'我的收入是:',me->earnings( ) DECIMALS 2 EXPONENT 0. ENDMETHOD. ENDCLASS.
CLASS zcl_sales DEFINITION
PUBLIC
INHERITING FROM zcl_employee
FINAL
CREATE PUBLIC . PUBLIC SECTION.
METHODS:
constructor IMPORTING
fn TYPE string
ln TYPE string
sal TYPE f
comm TYPE float
quan TYPE i,
setSalary IMPORTING sal TYPE f,
setComm IMPORTING comm TYPE f,
setQuantity IMPORTING qu TYPE i,
earnings REDEFINITION,
print REDEFINITION. PROTECTED SECTION.
PRIVATE SECTION.
DATA:salary TYPE f,
commission TYPE f,
quantity TYPE i.
ENDCLASS.
SalesMan类
CLASS zcl_sales IMPLEMENTATION.
METHOD constructor.
CALL METHOD super->constructor
EXPORTING
firstname = fn
lastname = ln.
salary = sal.
commission = comm.
quantity = quan.
ENDMETHOD. METHOD setSalary.
salary = sal.
ENDMETHOD. METHOD setComm.
commission = comm.
ENDMETHOD. METHOD setQuantity.
quantity = qu.
ENDMETHOD. METHOD earnings.
earn = salary + commission * quantity.
ENDMETHOD. METHOD print.
WRITE:/,'my name is:', get_printname( ).
WRITE:/,'我的收入是:',me->earnings( ) DECIMALS 2 EXPONENT 0. ENDMETHOD. ENDCLASS.
*&---------------------------------------------------------------------*
*& Report zaxyt_employee_demo
*&---------------------------------------------------------------------*
*& 员工类的测试程序
*&---------------------------------------------------------------------*
REPORT zaxyt_employee_demo.
主程序
DATA: o_sales TYPE REF TO zcl_sales,
o_boss TYPE REF TO zcl_boss,
o_emp TYPE REF TO zcl_employee. CREATE OBJECT o_sales
EXPORTING
fn = 'David'
ln = 'Go'
sal = '1222.88'
comm = '0.5'
quan = 15000. o_emp = o_sales.
o_sales->print( ). CREATE OBJECT o_boss
EXPORTING
fn = '王麻子'
ln = '尼古拉斯'
wl = '1000'. o_emp = o_boss.
o_boss->print( ).
ABAP开发面向对象---类的更多相关文章
- python3 全栈开发 -- 面向对象 类的组合和封装
一.类的组合 1.什么是组合 组合:描述的是类与类之间的关系,是一种什么有什么关系 一个类产生的对象,该对象拥有一个属性,这个属性的值是来自于另外一个类的对象 2.什么是继承(回顾一下) 继承:描述的 ...
- ABAP对象-面向对象(转)
转自:https://www.jianshu.com/p/f847c8f71438 1 面向对象基础 不多赘述何为对象与类.简单回顾一下在面向对象特性. 封装 限定内部资源的可见性 多态 相同名称的方 ...
- [SAP ABAP开发技术总结]OPEN SQL
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- 不喜欢SAP GUI?那试试用Eclipse进行ABAP开发吧
Jerry和SAP成都研究院一些新同事聊天时,谈到ABAP和SAP GUI这个话题.很多新同事在加入SAP成都之前,是做Java和C++开发的,习惯了Eclipse/IntelliJ IDEA/Vis ...
- Python之面向对象类和对象
Python之面向对象类和对象 定义一个类:class 定义类的语法: class Test(object): """ 类里定义一类事物共同的技能. 可以是变量,也可是函 ...
- oopday01(面向对象-类&private&this)
面向对象基本概述.封装 01_面向对象(面向对象思想概述) * A:面向过程思想概述 * 第一步 * 第二步 * B:面向对象思想概述 * 找对象(第一步,第二步) * C:举例 ...
- ABAP开发环境语法高亮的那些事儿
关于SAP ABAP开发环境,Jerry之前写过几篇公众号文章: 那些年我用过的SAP IDE 不喜欢SAP GUI?那试试用Eclipse进行ABAP开发吧 使用Visual Studio Code ...
- [SAP ABAP开发技术总结]内表操作
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- ABAP开发实用快捷键
在程序中注释代码往往受输入法影响,看了别人的一篇博客,结合自己的测试发现用如下方法可以直接注释源代码不受输入法影响 添加注释:ctrl + space + < 去掉注释:ctrl + space ...
- ABAP开发人员未来应该学些什么
2007年1月我大学毕业进入SAP Chengdu从事开发工作,到今天已经整整11年了. 这张图在ABAP开发圈子里曾广为流传: 为了避免这种窘境发生在ABAPer身上,我们应该做点什么呢? 2017 ...
随机推荐
- iOS笔记 - runtime 02:objc_msgSend执行流程
objc_msgSend 执行流程 1 - 第一步:消息发送 2 - 第二步:动态解析 代码示例:resolveInstanceMethod | resolveClassMethod 存在问题:68 ...
- Linux系统root密码忘记修改
重启Linux系统 到启动状态: 按任意键,进入GRUB菜单: 按字母e进入: 调整到上图,按字母e,进入 不进行删减,在后面输入" 1"(空格1),按回车,进入 或者将" ...
- MySQL时区的问题
我这里是在application.properties文件中配置的MySQL连接信息. 开始时间显示不征程是因为没有配置时区,后来加上了setTimeZone=Asia/Shanghai,时间显示正常 ...
- 设置cudnn日志
主要分为两个步骤,分别设置两个环境变量. 第一步,设置日志级别. # 三种级别,设置环境变量为1为开启,设置为0关闭. # CUDNN_LOGINFO_DBG # CUDNN_LOGWARN_DBG ...
- 面试之CAS
1.CAS(Compare And Swap)比较并替换,是线程并发运行时用到的一种技术或者算法,CAS与之对应的是一些锁技术,,例如synconozied,同事这种比较替换的思想也可以运用到数据库上 ...
- MVP模式(转)
什么是MVP模式? 这个MVP可不是腾讯游戏<王者荣耀>中的MVP.我们今天要讨论的MVP其实同MVC一样,是一种编程模式和思想,也许更准确地讲是一种架构. MVP和MVC的区别 ...
- 重试机制的实现(Guava Retry)
重试机制的实现 重试作用: 对于重试是有场景限制的,参数校验不合法.写操作等(要考虑写是否幂等)都不适合重试. 远程调用超时.网络突然中断可以重试.外部 RPC 调用,或者数据入库等操作,如果一次操作 ...
- exe可执行文件反编译成py文件
记录一下exe文件反编译的问题 准备工作 1. 安装第三方包 uncompyle6 (pip install uncompyle6==3.7.4) 2. 下载pyinstxtractor.py文件 3 ...
- EPLAN部件库汇总贴转
经常看到网友求EPLAN部件库,授人以鱼不如授人以渔,大可不必把所有部件装上,比如软件自带的部件库,我都弃之不用,新建一个部件库,把工作中经常要用到的部件慢慢添加进去.慢慢的你会发现:画图效率越来越高 ...
- 手写reduce()
function reduce(arr, callBack ,initVal){ if(!Array.isArray(arr) || !arr.length || typeof callBack != ...