ABAP面向对象

这篇博客详细介绍了ABAP的面向对象特性,包括面向对象基础、类的定义和实现、类方法、继承、抽象类和最终类、接口、事件以及全局类。重点讲解了类成员的可见性、方法的调用、接口实现以及事件的关键字。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ABAP面向对象

1、面向对象基础

一切皆对象,对象的三要素:封装、多态、继承

abap继承只支持单继承

2、类的定义和实现

ABAP定义类方法是分两部分:先定义、后实现, 最后…最后才是调用方法

2.1、类的定义

不同于java等程序,abap类的定义和实现是分开写的,按如下格式

REPORT  zcsdn_lion_obj02.

* 类(CLASS)—定义
CLASS my_ftion DEFINITION.
  PUBLIC SECTION."公共的,可定义方法、属性
    METHODS: show_text.
*METHODS: 方法1,方法2,方法3."多方法的直接用逗号隔开即可

  PROTECTED SECTION."保护的,可定义方法、属性
    DATA weight TYPE p DECIMALS 2.
    
  PRIVATE SECTION."私有的,可定义方法、属性
    DATA text(100) TYPE c VALUE 'ABAP面向对象第一课.'.
ENDCLASS.                    "application DEFINITION

*类(CLASS)—实现
CLASS my_ftion IMPLEMENTATION.
  METHOD show_text.
    WRITE text.
  ENDMETHOD.                    "show_text
ENDCLASS.                    "application DEFINITION


*类内部调用方法:show_text
DATA zs TYPE REF TO my_ftion.

START-OF-SELECTION."此处一定要加此语句,否则会报错:无法执行语句.
  CREATE OBJECT zs.
  CALL METHOD zs->show_text.

在这里插入图片描述

START-OF-SELECTION.的作用,在ALV选择块中做说明

2.2、类的成员

类成员:属性、方法、事件

2.3、类成员的可见性

PUBLIC SECTION——公有: 可被所有对象使用.

PROTECTED SECTION——保护: 只能被本类及其派生类中的方法使用.

PRIVATE SECTION——私有: 只能被类本身的方法所使用.

3、类方法

ABAP定义类方法是分两部分:先定义、后实现,最后才是调用

类方法的定义的种类

Methods meth
	IMPORTING...
	EXPORTING...
	RETURNING...
	CHANGING...
	Exceptions...

类方法的调用

Call Method  [oref->|class=>] meth
   Exporting ... i i= f i..."对应定义method中:Importing
   Importing... ei = gi..."对应定义method中:Exporting
   Changing...  ci = ci..."对应定义method中:Changing
   Receiving  r = h"对应定义method中:RETURNING
   Exceptions ...x..."对应定义method中:Exceptions

示例:

1、设置体重=100

2、设置身高=1.74

3、计算以上体重身高的BMI:体重/身高

REPORT  zcsdn_lion_obj01.

* 定义my_person类
CLASS my_person DEFINITION.
* 公共属性
  PUBLIC SECTION.
*开始定义方法.
    METHODS:function01,
                      setwet IMPORTING value(str2) TYPE p ."需要输入参数的,需在定义方法时说明.
    METHODS bmi EXPORTING value(rt) TYPE p.
    METHODS showname RETURNING value(str1) TYPE string."方法需要return值的,需要在定义方法时指定
    METHODS bmi2 EXPORTING value(rt) TYPE p EXCEPTIONS error.

    DATA:name TYPE string VALUE '李四',"姓名.
          age TYPE i,                 "年龄.
          sex TYPE i.                  "性别.
    DATA:height TYPE p DECIMALS 2."身高.

* 类似static静态属性
    CLASS-DATA:qt TYPE i."数量.

*保护属性
  PROTECTED SECTION.

*私有属性
  PRIVATE SECTION.
    DATA:wgt TYPE p DECIMALS 2."体重.

ENDCLASS.                    "person

*----   CLASS person IMPLEMENTATION   -----------*
CLASS my_person IMPLEMENTATION.
*实现方法:function01
  METHOD function01.
    qt = qt + 23.
  ENDMETHOD.                                                "function01

*实现方法:showname,带返回值功能
  METHOD showname.
*str1 = '姓名=' + name.
    CONCATENATE '姓名:' name INTO str1.
  ENDMETHOD.                    "showname

*实现方法:setwet,带赋值功能
  METHOD setwet.
    wgt = str2.
  ENDMETHOD.                    "setwet

*方法需要另行计算的
  METHOD bmi.
    rt =  wgt / height .
  ENDMETHOD.      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值