填空题 阅读以下说明和Java代码,回答问题。
[说明]
已知类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、
【正确答案】 1、{{*HTML*}}(1) this (2) super
错误更正结果为:public abstract,int getSum();
变量i的值为5
运行结果为:
-3
2    
【答案解析】[解析] 本题主要考察了Java程序语言中类成员变量的初始化、父类成员方法的调用、对象的构造等。(1)处要求用参数j的值更新数据成员,为避免与同名变量j冲突,应加this前缀,所以(1)处应为this,(2)处要求调用父类方法getValue(),但为了和子类方法相区别,应加前缀super,所以(2)处应为super。程序14行getSum函数是一个抽象函数,在SubClass子类中将被继承实现,所以该函数不可以被定义为final类型,因此应该去掉final关键字;当程序运行到22行之前时父类构造函数已执行,所以i值为5。最后程序输出的结果应为-3和2。