下面程序段的输出结果是( )。 classBase { inti; Base( ) { add(1); } voidadd(intv) { i+=V; } voidprint( ) { System.out.println(i); } }

admin2013-12-02  28

问题 下面程序段的输出结果是(    )。
classBase
{
inti;
Base(    )
{
add(1);
}
voidadd(intv)
{
i+=V;
}
voidprint(    )
{
System.out.println(i);
}
}
classExtensionextendsBase
{
Extension(    )
{
add(2);
}
voidadd(intv)
{
i+=v*2l
}
}
publicclassTest
{
publicstaticvoidmain(Stringargs[])
{
bogo(newExtension(    ));
}
staticvoidbogo(Baseb)
{
b.add(8);
b.print(    );
}
}

选项 A、9
B、18
C、20
D、22

答案D

解析 本题考查继承和构造函数的用法。首先要明确对一个类的继承是指在父类的基础上构建了一个子类,子类继承了父类的方法和状态。题目所给程序段创建的是Extension类的实例,在运行时,从main()函数进入程序.所有调用add()方法的过程将始终和Extension类的add()方法动态绑定。初始值:i=0;创建实例newExtension();先调用父类的默认构造函数.Base(),并在父类的默认构造函数中执行add(1)。i=0+1×2,所以i=2,再调用子类的默认构造函数Extension(),子类的默认构造函数中执行add(2),i=2+2×2,所以i=6;执行add(8);i=6+8×2.因此,最终i=22,正确答案为选项D。
转载请注明原文地址:https://kaotiyun.com/show/l1ID777K
0

最新回复(0)