今日学习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开发面向对象---类的更多相关文章

  1. python3 全栈开发 -- 面向对象 类的组合和封装

    一.类的组合 1.什么是组合 组合:描述的是类与类之间的关系,是一种什么有什么关系 一个类产生的对象,该对象拥有一个属性,这个属性的值是来自于另外一个类的对象 2.什么是继承(回顾一下) 继承:描述的 ...

  2. ABAP对象-面向对象(转)

    转自:https://www.jianshu.com/p/f847c8f71438 1 面向对象基础 不多赘述何为对象与类.简单回顾一下在面向对象特性. 封装 限定内部资源的可见性 多态 相同名称的方 ...

  3. [SAP ABAP开发技术总结]OPEN SQL

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  4. 不喜欢SAP GUI?那试试用Eclipse进行ABAP开发吧

    Jerry和SAP成都研究院一些新同事聊天时,谈到ABAP和SAP GUI这个话题.很多新同事在加入SAP成都之前,是做Java和C++开发的,习惯了Eclipse/IntelliJ IDEA/Vis ...

  5. Python之面向对象类和对象

    Python之面向对象类和对象 定义一个类:class 定义类的语法: class Test(object): """ 类里定义一类事物共同的技能. 可以是变量,也可是函 ...

  6. oopday01(面向对象-类&private&this)

    面向对象基本概述.封装 01_面向对象(面向对象思想概述) * A:面向过程思想概述    * 第一步    * 第二步 * B:面向对象思想概述    * 找对象(第一步,第二步) * C:举例   ...

  7. ABAP开发环境语法高亮的那些事儿

    关于SAP ABAP开发环境,Jerry之前写过几篇公众号文章: 那些年我用过的SAP IDE 不喜欢SAP GUI?那试试用Eclipse进行ABAP开发吧 使用Visual Studio Code ...

  8. [SAP ABAP开发技术总结]内表操作

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  9. ABAP开发实用快捷键

    在程序中注释代码往往受输入法影响,看了别人的一篇博客,结合自己的测试发现用如下方法可以直接注释源代码不受输入法影响 添加注释:ctrl + space + < 去掉注释:ctrl + space ...

  10. ABAP开发人员未来应该学些什么

    2007年1月我大学毕业进入SAP Chengdu从事开发工作,到今天已经整整11年了. 这张图在ABAP开发圈子里曾广为流传: 为了避免这种窘境发生在ABAPer身上,我们应该做点什么呢? 2017 ...

随机推荐

  1. Elasticsearch Java client使用

    前言 Elasticsearch官方列出了好几个客户端,如下所示 Java Client Java Rest Client(Java High Level REST Client) Java Tran ...

  2. Java基础__04.GUI编程

    GUI编程常见的组件: 窗口 弹窗 面板 文本框 列表框 按钮 图片 监听事件 鼠标操作 键盘事件 GUI简介 GUI的核心技术:Swing AWT,是需要jre环境的. AWT介绍 包含了很多类和接 ...

  3. JQuery的dataTable实现分页

    关于dataTable基本使用有很多帖子说的很详细,在此不做详述. 最近使用dataTable处理服务器返回分页数据时遇到问题,问题解决后有一些心得分享一下: 1. 如果打开界面通过dataTable ...

  4. POWER BI - 根据条件,改变数值的颜色Conditional formatting

    在visual块,右键Column选择Conditional formatting 举例,比如difference > 0 显示红色,否则<0显示绿色 如何根据 measure 写特定条件 ...

  5. csec的key更新

    在对csec的使用中(其他遵循hsm key update协议的芯片也适用),kdf的运算过程中遇到的数据都是128bit.不需要考虑padding的问题.目前并没有找到对padding的一致性的处理 ...

  6. docker的使用以及常用命令

    查看docker镜像仓库中是否存在某个镜像,通常第一个或stars最多的就是我们要是使用的,以nginx为例 # 搜索一下是否存在该镜像文件 docker search nginx # 安装使用该镜像 ...

  7. 08 安装虚拟机:Windows 10

    08 安装虚拟机:Windows 10 在安装虚拟机之前,总是要有安装来源媒体(例如:ISO映像之类),方可顺利进行.在Proxmox VE中有几种将ISO档置入Proxmox VE的方式,本节介绍其 ...

  8. [Python.Unix和Linux系统管理指南]书籍

    Python.Unix和Linux系统管理指南书籍下载地址 提取码:eqf4 内容简介  · · · · · · <Python UNIX和Linux系统管理指南>介绍了Python语言如 ...

  9. canvas合并图片并长按保存

    代码实现 <div class="pho-bg"> <img src="../../assets/images/FeedbackActivity/pos ...

  10. MySQL 常用命令(3)------表基本操作

    五.表的基本操作 1.创建表 语法:create table <表名> ( <字段名1> <类型1> [,..<字段名n> <类型n>]); ...