下面程序段的输出结果是( )。 classBase { inti; Base() { add(1); } voidadd(intV) { i+=v; } Voidphnt()

admin2010-12-17  29

问题 下面程序段的输出结果是(    )。    classBase    {    inti;    Base()    {    add(1);    }    voidadd(intV)    {    i+=v;    }    Voidphnt()    {    System.out.println(i);    }    }    Class EXtenSiOneXtendSBaSe    {    ExtensiOn()    {    add(2);    }    voidadd(int v)    {    i+=v*2;    }    }    public class TeSst    {    publicstatic voidmain(String argS[])    {    bogo(new Extension());    }    Static voidbogo(Base B) {    b.add(8);    b.phnt();    }    }   

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

答案D

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

最新回复(0)