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 ...
随机推荐
- MAC 不带XIB新建ViewController
- (void)loadView{ NSView *view = [[NSView alloc]init]; self.view = view; } MAC 开发的小伙伴
- HIVE - HIVEQL学习笔记
Hive Learning HIVEQL和MYSQL最为接近 数据操作 SHOW TABLES IN crm_integration Show tables 'dim_con*' DESCRIBE E ...
- torch.squeeze函数解释,torch.FloatTensor()函数作用解释
1. torch.squeeze(x,N) 主要对数据维度进行压缩 torch.squeeze(x,N) #也可以写为格式 x.squeeze(dim=N) 含义:当N未给定时,去掉x中所有维度为1 ...
- 城壁 (Rampart)
题意简述 给定一张 $H \times W $ 的网格图,其中有 \(P\) 个被标记的点,求边长为 \(L\) 或以上的正方形的个数,要求正方形的边不得经过被标记的点. \(1 \le H,W \l ...
- docker实战(8)使用docker-compose快速搭建zookeeper集群
镜像下载 docker pull zookeeper 复制 zookeeper 集群的搭建 创建名为docker-compose.yml的文件 输入以下内容 version: '2' services ...
- nodejs+koa 后台框架结构、demo学习地址
框架结构例子 https://github.com/bayi-lzp/koa-template 官网例子(有很多 示例) https://github.com/koajs/examples <K ...
- iOS 15 UI适配
1. UINavigationBar 在iOS 15中,UINavigationBar默认为透明.在滑动时会有模糊效果.如果想要一直就是模糊效果,可以通过改变scrollEdgeAppearance属 ...
- Linux下找不到SO的解决方法
Linux下找不到so文件的解决办法 1)将.so文件路径的目录添加到/etc/ld.so.conf sudo vim /etc/ld.so.conf 将你的SO文件存放路径的根目录写进去(不带so本 ...
- JavaScript 字符串的操作
1. 在指定位置,插入字符串(此需求来源于,img中src没值的字符串标签中,插入图片http地址) // 使用slice写出的 自定义方法,绑定在String的原型链上 String.prototy ...
- Lua监听事件观察者模式(多个监听者监听)
fireEvent 产生事件,创建协程分发(在registerEventListener注册过的事件中通过事件名字找到对应的信息,然后执行对应模块的OnEvent函数),多个地方都注册了同一个事件的话 ...