當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
你真的会用ABAP, Java和JavaScript里的constructor么?
生活随笔
收集整理的這篇文章主要介紹了
你真的会用ABAP, Java和JavaScript里的constructor么?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
如果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
要獲取更多Jerry的原創技術文章,請關注公眾號"汪子熙":
總結
以上是生活随笔為你收集整理的你真的会用ABAP, Java和JavaScript里的constructor么?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sap.ui.require in SA
- 下一篇: AMD R9 7900 12 核处理器降