今日学习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. groupByKey、reduceByKey、aggregateByKey、foldByKey、combineByKey的联系和区别

    groupByKey根据key对value进行分组,默认没有预聚合 combineByKeyWithClassTag[CompactBuffer[V]]( createCombiner, mergeV ...

  2. nop4.3 admin中添加新菜单

    感觉跟之前版本区别不是很大,先记录下. 1. 首先在sitemap.config 文件里添加菜单. <siteMapNode SystemName="SystemManage" ...

  3. 阻止form表单默认跳转

    form表单提交后,会默认跳转

  4. pycharm中运行shell脚本

    为了跑一份深度学习工程文件,这份文件夹有好几份子文件夹,子文件夹里有.sh脚本.我以前跟盛哥来跑强化学习的代码时,盛哥教我装了git,所以用git是可以来跑脚本的.费力搞了半天装cygwin来跑,实际 ...

  5. tapdata问题

    聚合节点写两个不同的聚合函数,只需要在关联目标节点的目标字段中添加上分组字段,其他字段不用做关联 聚合节点写两个相同的聚合函数,只需要在关联目标节点的目标字段中左右两边都添加上_id,会输出两条数据, ...

  6. KEIL5中C/C++优化等级问题

    知乎上有篇详解   https://zhuanlan.zhihu.com/p/24402180 强烈推荐 C/C++的优化等级会对程序产生 不定性的影响,至于选择哪种优化等级必须从 现有的程序分析才行 ...

  7. php 动态实例化某个类

    $name = 'test'; $controller = 'test'; $a = '\\addons\\'.$name.'\\model\\'.$controller; $this->mod ...

  8. Win10 ISS Web服务器安装与部署

    Win10 ISS Web服务器安装与部署 安装 ISS 控制面板-->程序-->启用或关闭 Windows 功能-->Internet Information Services 测 ...

  9. Gin加载history模式下打包后的Vue文件,刷新找不到页面404

    import ( "io/ioutil" "github.com/gin-contrib/static" "github.com/gin-gonic/ ...

  10. laravel facebook等第三方授权登录

    https://laravelacademy.org/post/9043.html 使用laravel此扩展组件处理 https://developers.facebook.com/apps/?sho ...