试题与答案

下面程序段的输出结果是 class Base int i;Base()add(1

题型:单项选择题

题目:

下面程序段的输出结果是
class Base

int i;
Base()

add(1);

void add(int v)

i+=v;

void print()

System.out.println(i);


class Extension extends Base

Extension()

add(2);

void add(int v)

i+=v*2;


public class Test

public static void main(String args[])

bogo(new Extension());

static void bogo(Base b)

b.add(8);
b.print();

A.9

B.18

C.20

D.22

答案:

参考答案:D

解析: 本题考查继承和构造函数的用法。首先要明确对一个类的继承是指在父类的基础上构建了一个子类,子类继承了父类的方法和状态。题目所给程序段创建的是Extension类的实例,在运行时,从main()函数进入程序,所有调用add()方法的过程将始终和Extension类的add()方法动态绑定。初始值:i=0;创建实例new Extension();先调用父类的默认构造函数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。

试题推荐
题型:多项选择题

金融期货和金融远期合约的重要区别在于( )。

A.金融远期合约能够降低风险,但金融期货合约不能降低风险

B.金融远期合约大多在场外进行交易,金融期货合约在交易所内进行交易

C.金融远期合约的收益和损失一般在合约到期日实现,金融期货合约的盈利和亏损在每个交易日结束前清算和执行

D.金融远期合约买卖双方一般不进行实物交割,金融期货合约一般都进行实物交割

E.金融远期合约的二级市场非常活跃,金融期货合约的二级市场非常不活跃

查看答案
微信公众账号搜索答案