`
JerryWang_SAP
  • 浏览: 1004870 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

你真的会用ABAP, Java和JavaScript里的constructor么?

阅读更多

如果constructor里调用了一个成员方法,这个方法被子类override了,当初始化一个子类实例时,父类的构造函数被的调用,此时父类构造函数的上下文里调用的成员方法,是父类的实现还是子类的实现?
你能不用运行代码,就能准确说出这些语句会打印什么出来呢?

ABAP

class ZCL_SUPER definition
  public
  create public .
public section.
  methods CONSTRUCTOR .
  methods SET_I
    importing
      !IV_I type INT4 .
protected section.
private section.
  data MV_SUPER type INT4 .
ENDCLASS.
CLASS ZCL_SUPER IMPLEMENTATION.
  method CONSTRUCTOR.
    me->set_i( 100 ).
  endmethod.
  method SET_I.
    me->mv_super = iv_i.
  endmethod.
ENDCLASS.
class ZCL_SUB definition
  public
  inheriting from ZCL_SUPER
  final
  create public .
public section.
  methods PRINT .
  methods SET_I
    redefinition .
protected section.
private section.
  data MV_SUB type I value 1 ##NO_TEXT.
ENDCLASS.
CLASS ZCL_SUB IMPLEMENTATION.
  method PRINT.
    WRITE: / ' sub:' , mv_sub.
  endmethod.
  METHOD set_i.
    super->set_i( iv_i = iv_i ).
    me->mv_sub = iv_i.
    WRITE: / 'mv_sub assigned by: ' , iv_i.
  ENDMETHOD.
ENDCLASS.

测试:

NEW zcl_sub( )->print( ).

测试结果:sub: 1

Java

public class SuperClass {

    private int mSuperX;

    public SuperClass() {
        setX(99);
    }

    public void setX(int x) {
        mSuperX = x;
    }
}
public class SubClass extends SuperClass {

    private int mSubX = 1;

    public SubClass() {}

    @Override
    public void setX(int x) {
        super.setX(x);
        mSubX = x;
        System.out.println("SubX is assigned " + x);
    }

    public void printX() {
        System.out.println("SubX = " + mSubX);
    }
}

test:

public static void main(String[] args) {
        SubClass sc = new SubClass();
        sc.printX();
    }

测试结果:

 

 

JavaScript

function SuperClass(){
    this.setX(99);
}

SuperClass.prototype = {
    mSuperX : 0,
    setX : function(x){
         this.mSuperX = x;
    }
};
function SubClass(){  
    SuperClass.call(this);  
    this.mSubX = 1;
}  

SubClass.prototype = new SuperClass();  

SubClass.prototype.setX = function(x){
        SuperClass.prototype.setX(x);
        this.mSubX = x;
        console.log("SubX is assigned " + x);
};

SubClass.prototype.print = function(){
    console.log("SubX: " + this.mSubX);
}

test:

var sub = new SubClass();
sub.print();

测试结果:

 

 

详细分析在我的SAP community博客里: A reminder for using constructor in OO world
要获取更多Jerry的原创技术文章,请关注公众号"汪子熙"或者扫描下面二维码:

 
 
0
0
分享到:
评论

相关推荐

    sap abap调用java生成的webservice手册

    【SAP ABAP调用Java生成的Web Service手册】 在SAP系统中,与外部服务进行交互时,经常需要调用由Java等其他语言编写的Web Service。本手册详细介绍了如何在MyEclipse环境中生成Web Service,并在SAP ABAP环境中...

    abap逻辑数据库ABAP数据库操作

    标题和描述所涉及的知识点主要集中在ABAP语言在SAP系统中对数据库的操作和管理。由于这部分内容比较专业,我将尽量详细地阐述ABAP(Advanced Business Application Programming)逻辑数据库和数据库操作的概念和用法...

    JAVA与ABAP之间通过RFC互传数据_JCO实例及API

    在IT领域,尤其是在企业级应用开发中,Java和ABAP(Advanced Business Application Programming)是两种常用的编程语言。Java广泛应用于互联网应用,而ABAP则是SAP系统的核心编程语言。为了实现不同系统的集成和数据...

    java +abap+rfc

    Java与SAP ABAP之间的通信主要通过Remote Function Call (RFC)接口实现,这是一种标准化的方式,允许不同系统间的双向数据交换。在本项目中,我们使用了JCo3(Java Connector version 3)库,它是SAP提供的Java API...

    SAP ABAP与JAVA之间通过RFC传递数据实例

    ### SAP ABAP与JAVA之间通过RFC传递数据实例详解 #### 需求概述 本文档主要介绍了如何在SAP ABAP系统与JAVA应用程序之间通过RFC(Remote Function Call远程函数调用)实现数据交互的具体实现方法。核心需求是在给定...

    Abap programming

    本主题聚焦于“ABAP编程”与“JavaScript”的结合,探讨如何在SAP环境中集成这两种技术以构建更丰富的用户界面和交互体验。 一、ABAP基础 ABAP是SAP的核心编程语言,用于开发SAP模块,如财务、人力资源、供应链管理...

    abap objects for java developers.pdf

    《ABAP Objects for Java Developers》这本资料旨在帮助Java开发者更好地理解和使用ABAP对象编程,以实现高效的应用程序开发。 #### 学习目标 通过学习这份资料,Java开发者将能够: - **编写ABAP程序**:按照Java...

    30天学会ABAP很好的教程

    在实际学习过程中,本教程会从基础篇开始,逐步讲解ABAP的基础知识,包括ABAP的定义、开发环境的搭建、获取Access Key、ABAP Workbench和Dictionary的使用,以及编写第一个"Hello World"程序。接着,会深入到ABAP的...

    《ABAP开发要点---PP模块》

    ### ABAP开发要点——PP模块 #### 概述 在SAP系统中,PP(Production Planning)模块主要用于处理企业的生产规划与控制业务。对于从事ABAP(Advanced Business Application Programming)开发的技术人员而言,掌握...

    abap xlsx2 demo 程序

    "abap xlsx2 demo 程序"是一个示例项目,旨在展示如何在SAP系统中读取和写入Excel文件。在这个程序中,开发者可能使用了特定的库或者自定义开发的函数来实现与Excel的交互。 首先,要理解ABAP如何处理.xlsx文件,...

    SAP ABAP 开发环境和开发工具介绍

    在 SAP 系统中,开发环境和开发工具是必不可少的组件,开发者可以使用这些工具来创建、测试和部署 ABAP 程序。ABAP WORKBENCH 是 SAP 系统中最常用的开发环境之一,它提供了一个集成的开发环境,包括编辑器、调试器...

    ABAP 调用ABAP PROXY

    2. **生成Proxy代码**:在目标系统中,使用SE80事务码,通过“生成ABAP Proxy”功能,输入源系统的服务接口信息,自动生成对应的ABAP Proxy类和相关代码。 3. **编译与激活**:生成的Proxy代码需要在目标系统中进行...

    ABAP加密和解密.doc

    在ABAP编程中,加密和解密是两个关键的安全操作,用于保护敏感数据不被未经授权的用户访问。本文将深入探讨ABAP环境下的加密和解密技术,以及如何在实际应用中实施这些技术。 首先,我们需要理解加密的基本原理。...

    ABAP资料ABAP资料ABAP资料

    ABAP资料ABAP资料ABAP资料ABAP资料ABAP资料

    SAP_ABAP_4.7.rar_SAP abap4_abap_abap chm_abap 4_abap4

    ABAP 4.7引入了类和对象的概念,支持继承、封装和多态性,这使得代码可维护性和复用性大大提升。 5. 功能模块和库: 功能模块是预定义的程序单元,可以被其他程序调用。ABAP库则包含一组相关功能模块,用于特定的...

    CEON ABAP Eclipse Editor

    然而,为了使用 ABAP Eclipse 编辑器,开发人员仍需在 SAP 系统中注册为 SAP 开发者,这与使用 SAP GUI 进行开发的要求相同。 #### 为何选择 ABAP Eclipse 编辑器? 开发 ABAP Eclipse 编辑器的主要动力是解决 ...

    abap学习资料abap

    作为ABAP的学习资料,"ABAP学习资料abap"包含了针对初学者和进阶者的全面教程,旨在帮助用户在三个月内掌握ABAP的基础到高级知识。 文档“ABAP三月通.doc”很可能包含以下关键知识点: 1. **ABAP概述**:介绍ABAP...

    ABAP TREE ABAP TREE ABAP TREE

    在ABAP编程中,"ABAP TREE"是一种数据结构,用于存储和处理层次化或树状的数据。在本文中,我们将深入探讨ABAP中的树结构,包括它的定义、使用场景、如何创建以及相关的操作。 首先,理解ABAP TREE的基础概念至关...

    abap关键字的查询帮助

    “abap语法.chm”和“abap语法.chw”文件很可能是ABAP的参考手册或词典,提供了完整的ABAP关键字列表和相关解释。这些文件对于学习和查询ABAP关键字非常有用,因为它们通常包含详尽的描述、用法示例以及可能的错误...

Global site tag (gtag.js) - Google Analytics