博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
你真的会用ABAP, Java和JavaScript里的constructor么?
阅读量:6622 次
发布时间:2019-06-25

本文共 2211 字,大约阅读时间需要 7 分钟。

hot3.png

如果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博客里: 要获取更多Jerry的原创技术文章,请关注公众号"汪子熙"或者扫描下面二维码:

转载于:https://my.oschina.net/u/3771578/blog/1790273

你可能感兴趣的文章
java获取当前时间前一周、前一月、前一年的时间
查看>>
话说WEB开发之页面重绘和回流
查看>>
vuex之传递参数(五)
查看>>
xutils使用手册(一)——初始化
查看>>
using标识使用
查看>>
解决linux下不能上网
查看>>
nginx rewrite伪静态配置参数说明
查看>>
python学习笔记(15-18)
查看>>
【转】linux进程的内存使用解析
查看>>
我的友情链接
查看>>
Oracle 查询不区分大小写 (正则函数)
查看>>
T264接口说明
查看>>
SELinux介绍
查看>>
visual C++ 用 TextOut 输出单个字符
查看>>
Rsyslog实现Nginx日志统一收集
查看>>
开源数字媒体资产管理系统:Razuna
查看>>
linux文本处理三剑客之grep家族及其相应的正则表达式使用详解
查看>>
Java中的IO操作(一)
查看>>
Python---装饰器
查看>>
s17data01
查看>>