软考初级

已知类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 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 运行结果为: -3 2
(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。
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

设有程序如下: public class jzh0319 { public static void main(String args[]) { subClass sc=new subClass(); } } class superClass { superClass() { System.out.println("父类");} } class subClass extends superClass { subClass() {System.out.println("子类"); } } 其输出结果的第二行为:子类。()

此题为判断题(对,错)。


答案:对

第2题:

设有程序如下: public class jzh0319 { public static void main(String args[]) { subClass sc=new subClass(); } } class superClass { superClass() { System.out.println("父类");} } class subClass extends superClass { subClass() {System.out.println("子类"); } } 其输出结果的第一行是:父类。()

此题为判断题(对,错)。


答案:对

第3题:

●下列说法中错误的是 ()。()A.类是一组具有相同属性和相同操作的对象集合B.一般类是特殊类的父类(superclass),特殊类是一般类的子类(subclass)C.父类应包含其子类的所有属性和操作D.对类的属性的不同赋值即可得到该类的对象实例


正确答案:C
父类应为一个抽象,它不可能包含子类的所有属性和操作。

第4题:

关于下面程序,( )的结论是正确的。

classJ_SubClassextendsJ_Test{}

publicclassJ_Test{

J_Test(inti){

System.out.println(i);

}

publicstaticvoidmain(String[]args){

J_SubClassa=newJ_SubClass();

}

}

A、不能通过编译,因为类J_Test没有定义无参数的构造方法

B、不能通过编译,因为类J_SubClass没有定义无参数的构造方法

C、不能通过编译,因为没有实现J_SubClass(inti)的构造方法

D、可以成功通过编译


正确答案:A

第5题:

阅读以下说明和C++代码。

[说明]

已知类SubClass的getSum方法返回其父类成员与类SubClass成员j的和,类 SuperClass中的getSum为纯虚拟函数。程序中的第23行有错误,请修改该错误并给出修改后的完整结果,然后完善程序中的空缺,分析程序运行到第15行且尚未执行第15行的语句时成员变量j的值,最后给出程序运行后的输出结果。

[C++代码]


正确答案:(1)this->j (2)SuperClass∷ 错误更正结果:SuperClass*s=new SubClass(-3); 变量i的值:0 运行结果:-32
(1)this->j (2)SuperClass∷ 错误更正结果:SuperClass*s=new SubClass(-3); 变量i的值:0 运行结果:-3,2 解析:本题考查的是面向对象程序设计语言C++。
考查的主要知识点为C++程序设计语言中类成员变量的初始化、父类成员方法的调用、对象的构造等。第一空要求用用参数j的值更新数据成员,由于成员变量名也为i因此需要明确地指出需要更新的变量j为类中的成员变量,可以在前面加上一个明确的前缀this来表示,因此(1)处应填写this->j:(2)处要求调用父类的成员方法getValue(),为了和子类中的getValue()相区别,需要加上域前缀,因此(2)处应该填写SuperClass∷,表明该函数属于类SuperClass;在程序的第23行,由于SuperClass s表明已经定义了一个对象,因此,后面不应该使用new再次分配一个对象,但是后面的程序代码将s作为一个对象指针使用,因此需要将s定义为一个指针,因此更改后结果应为:SuperClass*s= new SubClass(-3);当程序运行到第15行但是还没有执行15行的语句时,成员变量i的值应为构造函数初始化列表中指定的j的初始化值,本题目为0:最后程序的输出为-3和 2,-3为子类中成员变量j的值,而2表示父类中i的值和子类中i的值的和。

第6题:

下列程序的执行结果为______。 include class Myclass { public: void GetSum(int a)

下列程序的执行结果为______。

include<iostream.h>

class Myclass

{

public:

void GetSum(int a);

static int Sum;

prtvate:

int A;

};

int Myclass::Sum=10;//必须在类外部对静态数据成员初始化

void Myclass::GetSum(int a)

{

A=a;

Sum+=A:

}

vold PrintSum(Myclass& A)

{

cout<<"Sum="<<A. Sum<<endl;

}

void main( )

{

Myclass M,N;

M.GetSum(3);

N.GetSum(7);

PrintSum(M);

}


正确答案:sum=20
sum=20 解析:本题考察静态数据成员在同类的不同对象间的数据传递功能。Sum为所有对象的公共数据,M对象和N对象分别对sum进行累加,故结果为20。

第7题:

下列程序的执行结果是【 】。 include < iostream. h> class Myclass { public: void GetSum(int a)

下列程序的执行结果是【 】。

include < iostream. h>

class Myclass

{

public:

void GetSum(int a)

static int Sum:

private:

int A;

};

int Myclass:: Sum =10; //必须在类外部对静态数据成员初始化

void Myelass: :GetSum(int a)

{

A=a;

Sum+=A;

}

void PrintSum(Myclass& A)

{

cout<<"Sum="<<A.Sum<<end1;

}

void main( )

{

Myclass M,N;

M. GetSum(3)

N. GetSum(7)

PrintSum(M);

}


正确答案:sum=20
sum=20 解析:本题考察静态数据成员在同类的不同对象间的数据传递功能。Sum为所有对象的公共数据,M对象和N对象分别对sum进行累加,故结果为20。

第8题:

以下四个关于类的访问控制的描述哪一个是错误的

A、子类不能访问其父类的私有数据成员和成员函数

B、子类的对象不能访问其父类的保护数据成员或者成员函数

C、类的对象不能访问类的保护数据成员或者成员函数

D、类的成员函数不能访问类中的私有数据


参考答案:D

第9题:

已知类SubClass的getSum方法返回其父类成员i与类SubClass成员i的和,类SuperClass中的getSum为纯虚拟函数,程序中的第23行有错误,请修改该错误并给出修改后的完整结果,然后完善程序中的空缺,分析程序运行到第15行且尚未执行第15行的语句时成员变量j的值,最后给出程序运行后的输出结果。

[C++代码]

01 inclUde<iostream>

02 using namespace std;

03 class SuperClass {

04 private:

05 int i;

06 publiC:

07 SuperClass()(i=5;)

08 virtual iht getValueO(return i ;)

09 virtual int getSum()=0;

10 };

11 class SubClass:public SuperClass{

12 int J ;

13 public:

14 SubClass(int j):j(0){

15 (1) =j; //用参数j的值更新数据成员

16 };

17 int getValue(){return j;)

18 int getSum(){

19 return (2) getValue()+j;

20 }

21 };

22 void main(void){

23 SuperClass s=new SubClass(-3);

24 cout<<s->getValue()<<"";

25 tout<<s->getSum()<<endl;

26 delete s;

27 }


正确答案:(1) this->j (2) superclass!! 错误更正结果为:SuperClass *s=new SubClass(-3); 变量j的值为0 运行结果为-32
(1) this->j (2) superclass!! 错误更正结果为:SuperClass *s=new SubClass(-3); 变量j的值为0 运行结果为-3,2