问题 单项选择题

执行下列代码后,输出的结果为( )。
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。

填空题
多项选择题