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

ABAP

class ZCL_SUPER definitionpubliccreate public .
public section.methods CONSTRUCTOR .methods SET_Iimporting!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 definitionpublicinheriting from ZCL_SUPERfinalcreate public .
public section.methods PRINT .methods SET_Iredefinition .
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() {}@Overridepublic 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

你真的会用ABAP, Java和JavaScript里的constructor么? 1相关推荐

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

    如果constructor里调用了一个成员方法,这个方法被子类override了,当初始化一个子类实例时,父类的构造函数被的调用,此时父类构造函数的上下文里调用的成员方法,是父类的实现还是子类的实现? ...

  2. ABAP, Java和JavaScript三种语言的比较

    写这个系列的初衷是SAP Chengdu office有越来越多的应届毕业生加入,这些新同事通过在大学的专业学习,具备了Java和JavaScript背景,但是进入SAP之后大家觉得ABAP没有Jav ...

  3. Jerry的ABAP, Java和JavaScript乱炖

    写这个系列的初衷是SAP Chengdu office有越来越多的应届毕业生加入,这些新同事通过在大学的专业学习,具备了Java和JavaScript背景,但是进入SAP之后大家觉得ABAP没有Jav ...

  4. 介绍一种在ABAP内核态进行内表高效拷贝的方法,和对应的Java和JavaScript版本的伪实现

    内表操作是ABAP开发人员几乎在每个ABAP程序里都会遇到的. 看一个例子:有两个行结构不一样的内表,每个内表的行结构有三列,除了name这一列名字一致外,其他两列的名称都不同,下图用红色和蓝色标注出 ...

  5. java中的console是干什么的_[Java教程]javascript中,你真的会用console吗?

    [Java教程]javascript中,你真的会用console吗? 0 2015-08-11 17:00:09 使用console进行性能测试和计算代码运行时间 对于前端开发人员,在开发过程中经常需 ...

  6. ABAP mesh expression, JavaScript and Scala expression

    ABAP Mesh expression JavaScript 我在第10行调用了函数f,其中传入的第二个和第三个参数都是一个逗号表达式. 函数f的实现,会检查这两个参数的类型,如果是函数,则执行函数 ...

  7. java script创建对象_javascript笔记:深入分析javascript里对象的创建

    大家知道在java里面类可以具有静态属性和方法,无需实例化该类的对象,就可以访问这些属性和方法,但是javascript里面是不是只有通过对象初始化方式才会模拟出这样的特点了?其实不然,在编程语言里, ...

  8. android js交互 数组,Android WebView —— Java 与 JavaScript 交互总结

    相比于 Native App 和 Web App,Hybrid App 凭借其迭代灵活.控制自如.多端同步的优势在应用市场上越发显得优胜,主要得力于,其将变更频繁的部分产品功能使用 H5 开发并在客户 ...

  9. 调查发现 Java 和 JavaScript 是企业开发的顶级语言

    开发四年只会写业务代码,分布式高并发都不会还做程序员?   在今天的多语言编程世界中,企业不再局限于一种特定的编程语言. 但是,Cloud Foundry Foundation (CFF) 近日发布的 ...

  10. java中table是什么标签_[Java教程]javascript格式化table标签内容

    [Java教程]javascript格式化table标签内容 0 2015-07-12 20:00:08 项目中遇到这样的需求,一大段文章正文的html代码在手机中显示不全,原因是由于其它有table ...

最新文章

  1. Kubernetes Pod的生命周期(Lifecycle)
  2. android 列表倒计时,Android利用RecyclerView实现列表倒计时效果
  3. IBASE business knowledge from Gerhard
  4. 【算法分析与设计】最大连续子序列和问题
  5. 【Python】jieba库的使用
  6. 百度android定位 602 key mcode不匹配,我的Android进阶之旅------百度地图学习:BDLocation.getLocType ( )值分析...
  7. git实现审核功能_使用 Pull Request 功能进行代码审查
  8. 五分钟学会python函数_五分钟带你搞懂python 迭代器与生成器
  9. Maven项目添加ojdbc8
  10. PSpice添加SPICE模型
  11. 蜗牛星际D款安装黑群晖教程
  12. android平板改成电视盒子,安卓平板改裝成電視盒子
  13. 认识智慧城市顶层设计的MCS模式
  14. 【贪心+堆优化】奶牛晒衣服 dry.pas/c/cpp
  15. html中加粗文字,span文字加粗_span盒子对象内字体加粗
  16. 通过app打包修改app名称
  17. 教你使用powerDesigner反向生成oracle数据库模型
  18. 仿微博、微信、qq 点击缩略图, 查看高清图 UI 组件
  19. 企业QQ屏蔽联系人后双方收不到信息
  20. 【深度探讨】数据存储进化论,区块链才是未来

热门文章

  1. ElasticSearch6.0 Java API 使用 排序,分组 ,创建索引,添加索引数据,打分等(一)...
  2. SD卡中FAT32文件格式高速入门(图文具体介绍)
  3. linux命令及实例说明一:cd、ls、rmdir、rm、mkdir
  4. macOS 12兼容机型列表 想知道你的Mac是否支持macOS Monterey吗?
  5. CF-1208D-线段树和树状数组双解
  6. 【Flutter】Dart数据类型之num
  7. 助您写出优雅的Java代码七点建议
  8. BuzzFeed如何从Perl单体应用迁移到Go和Python微服务
  9. Java Mongodbjar包下载网址
  10. The Apache Software Foundation Announces Apache® Zeppelin™ as a Top-Level Project