如果在构造函数中调用了一个成员方法,这个方法就会被子类重写。初始化子类实例时,会调用父类的构造函数。此时在父类构造函数的上下文中调用的成员方法就是父类。实现还是子类实现?你能在不运行代码的情况下准确地说出这些语句将打印什么吗?ABAPclassZCL_SUPER定义公共创建公共.public部分。方法构造函数。方法SET_Iimporting!IV_ItypeINT4.protectedsection.privatesection。数据MV_SUPER类型INT4.ENDCLASS.CLASSZCL_SUPER实现。方法构造函数。我->设置我(100)。endmethod.methodSET_I.me->mv_super=iv_i.endmethod.ENDCLASS.classZCL_SUBdefinitionpublic继承自ZCL_SUPERfinalcreatepublic.publicsection.methodsPRINT.methodsSET_Iredefinition.protectedsection.privatesection.dataMV_SUB1#typeINO_TEXT。结束类',iv_i.结束方法。结束类。测试:新zcl_sub()->print().测试结果:sub:1JavapublicclassSuperClass{privateintmSuperX;publicSuperClass(){setX(99);}publicvoidsetX(intx){mSuperX=x;}}publicclassSubClassextendsSuperClass{privateintmSubX=1;publicSubClass(){}@OverridepublicvoidsetX(intx){super.setX(x);mSubX=x;System.out.println("SubX已赋值"+x);}publicvoidprintX(){System.out.println("SubX="+mSubX);}}test:publicstaticvoidmain(String[]args){SubClasssc=newSubClass();sc.printX();}测试结果:JavaScriptfunctionSuperClass(){this.setX(99);}SuperClass.prototype={mSuperX:0,setX:function(x){this.mSuperX=x;}};functionSubClass(){SuperClass.call(this);this.mSubX=1;}SubClass.prototype=newSuperClass();SubClass.prototype.setX=function(x){SuperClass.prototype.setX(x);这个.mSubX=X;console.log("SubXisassigned"+x);};SubClass.prototype.print=function(){console.log("SubX:"+this.mSubX);}test:varsub=newSubClass();sub.print();测试结果:详细分析在我的SAP社区博客:OO世界使用构造函数的提醒
