A-A+

执行下列代码后 输出的结果为()。 class Base { int x = 30; voi

2022-08-05 22:24:38 问答库 阅读 172 次

问题详情

执行下列代码后,输出的结果为()。 class Base { int x = 30; void setX() {x=1O;} } class SubClass extends Base { int x=40; void setX () {x=20;} int getX() {return super. x; } } public class Test { public static void main(String[ ] args) { SubClass sub=new SubClass(); sub. setX(); System. out. println(sub, getX() ); } }
A.10
B.20
C.30
D.40请帮忙给出正确答案和分析,谢谢!

参考答案

正确答案:C
解析:本题主要考查有关类的继承方面的知识。Java中,类是分层次的,当子类的成员变量与父类的成员变量名字相同时,子类的成员变量会隐藏父类的成员变量,当子类的成员方法与父类的成员方法名字、参数列表、返回值类型都相同时,子类的方法是父类的方法的重写。这样,在子类的对象调用方法时,是按照子类中方法定义执行,隐藏父类的方法的定义。当子类隐藏了父类的变量,并重写了父类的方法后,又要使用父类变量或父类被重写的方法时,可通过super来实现对父类变量的访问和父类方法的调用。因此,本题中在main ()中调用setX ()时,是调用的SubClass类中的setX ()函数,同时将SubClass类中的i变量值设为20。当main ()函数中调用getX ()函数时,并不是取了SubClass类中的i的值,而是取的Base类中i变量的值,此时i的值为其初始值30。

考点:代码,结果