已知类SubClass的getSum方法返回其父类成员i与类SubClass成员j的和;类S
问题详情
已知类SubClass的getSum方法返回其父类成员i与类SubClass成员j的和;类SuperClass中的getSum为抽象函数,程序中的第14行有错误,请修改该错误并给出修改后的完整结果,然后完善程序中的空缺,当程序运行到第22行且尚未执行第22行语句时成员变量i的值,最后给出程序运行后的输出结果。
[Java代码]
行号 代码
01 public class UainJava{
02 public static void main(String[]args){
03 SuperClass s=new SubClass();
04 System.out.printin(s.getValue());
05 System.out.printIn(s.getSum()):
06 }
07 }
08 abstract class SuperClass {
09 private int i;
10 public SuperClass(){i=5;}
11 public int getValue(){
12 return i:
13 }
14 public final abstract int getSum():
15 }
16 class SubClass extends SuperClass{
17 int j;
18 public SubClass(){
19 this(-3);
20 }
21 public SubClass(int j){
22 (1) .j=j;
23 }
24 publiC int getValue()(return j;}
25 public int getSum(){
26 return (2) .getValue()+j;
27 }
28请帮忙给出正确答案和分析,谢谢!
参考答案
正确答案:(1) this (2) super错误更正结果为:public abstractint getSum();变量i的值为5运行结果为:-32
(1) this (2) super错误更正结果为:public abstract,int getSum();变量i的值为5运行结果为:-32 解析:本题主要考察了Java程序语言中类成员变量的初始化、父类成员方法的调用、对象的构造等。(1)处要求用参数j的值更新数据成员,为避免与同名变量j冲突,应加this前缀,所以(1)处应为this,(2)处要求调用父类方法getValue(),但为了和子类方法相区别,应加前缀super,所以(2)处应为super。程序14行getSum函数是一个抽象函数,在SubClass子类中将被继承实现,所以该函数不可以被定义为final类型,因此应该去掉final关键字;当程序运行到22行之前时父类构造函数已执行,所以i值为5。最后程序输出的结果应为-3和2。