单选题class Base {  Base() { System.out.print(“Base”); }  }  public class Alpha extends Base {  public static void main( String[] args ) {  new Alpha();  new Base();  }  }  What is the result?()A  BaseB  BaseBaseC  Compilation fails.D  The code runs with no 

题目
单选题
class Base {  Base() { System.out.print(“Base”); }  }  public class Alpha extends Base {  public static void main( String[] args ) {  new Alpha();  new Base();  }  }  What is the result?()
A

 Base

B

 BaseBase

C

 Compilation fails.

D

 The code runs with no output.

E

 An exception is thrown at runtime.

如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

如下程序是为变量i赋值。若程序的输出结果是180。请将程序补充完整。

注意:不改动程序结构,不得增行或删行。

class Base

{

int i;

Base()

{

add(10);

}

void add(int v)

{

i+=v;

}

void print()

{

System.out.println(i);

}

}

class Extension extends Base

{

Extension()

{

add(______);

}

void add(int v)

{

i+=v*2;

}

}

public class ConstructTest3

{

public static void main(String args[])

{

bogo(new Extension());

}

static void bogo(Base b)

{

b.add(60);

b.print();

}

}


正确答案:20
20 解析:本题综合考查了几个知识点,如调用子类的构造函数时,会先调用父类的构造函数;如果在子类的构造函数中没有显示调用父类的构造函数,那么创建子类的实例时,会先调用父类的缺省构造函数;方法的动态绑定。这些知识是考试的难点。以上代码创建的是Extension类的实例,所以,在运行时,所有调用add()方法的过程,将始终和Extension类的 add()方法动态绑定。以下是程序依次对变量i的改变过程。
初始值:i=0
Step1:创建实例new Extension()
先调用父类的缺省构造函数Base(),注意,父类中的add方法已被子类重写。父类的缺省构造函数中执行add(10),i=0+10*2得到i=20,再调用子类的缺省构造函数Extension(),假设横线处应填入的数是x,子类的缺省构造函数中执行add(x),i=20+x*2。
step2:执行add(60)
i=20+x*2+60*2=180得到x=20

第2题:

写出程序运行的结果

Public class Base

Public virtual string Hello() {return “Base”;}

Public class Sub:Base

Public override string Hello() {return “Sub”;}

1. Base b = new Base(); b.Hello;

2. Sub s = new Sub(); s.Hello;

3. Base b = new Sub (); b.Hello;

4. Sub s = new Base(); s.Hello;


正确答案:
 

第3题:

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

第4题:

以下程序的调试结果为?class Base{public final void amethod(){System.out.println("amethod");}}public class Fin extends Base{public static void main(String argv[]){Base b = new Base();b.amethod();}}

A.编译指示带有final 方法的类自己必须定义为final

B.编译指示不能继承含有final 方法的类

C.运行错误,原因是Base类没有定义为final类

D.运行输出 amethod


正确答案:D

第5题:

以下程序的编译和运行结果为?

abstract class Base{

abstract public void myfunc();

public void another(){

System.out.println("Another method");

}

}

public class Abs extends Base{

public static void main(String argv[]){

Abs a = new Abs();

A.amethod();

}

public void myfunc(){

System.out.println("My Func");

}

public void amethod(){

myfunc();

}

}

A.输出结果为 My Func

B.编译指示 Base 类中无抽象方法

C.编译通过,但运行时指示Base 类中无抽象方法

D.编译指示Base 类中的myfunc方法无方法体,没谁会喜欢该方法。


正确答案:A

第6题:

下面程序段的输出结果是( )。 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) { add(8); print; } }

A.9

B.18

C.20

D.22


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

第7题:

设有类定义如下:

class Base{

public Base(int i){}

}

public class MyOver extends Base{

public static void main(String arg[]){

MyOver m = new MyOver(10);

}

MyOver(int i){

super(i);

}

MyOver(String s, int i){

this(i);

//Here

}

}

以下哪条语句可以安排在//Here处 ?

A.MyOver m = new MyOver();

B.super();

C.this("Hello",10);

D.Base b = new Base(10);


正确答案:D

第8题:

下面程序段的输出结果是 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(Baseb){ 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。

第9题:

以下程序调试结果为:class Base{Base(){int i = 100;System.out.print (i);}}public class Pri extends Base{static int i = 200;public static void main(String argv[]){Pri p = new Pri();System.out.print(i);}}

A.编译错误

B.200

C.100200

D.100


正确答案:C

第10题:

设有如下代码:

interface IFace{}

class CFace implements IFace{}

class Base{}

public class ObRef extends Base{

public static void main(String argv[]){

ObRef bj = new ObRef();

Base b = new Base();

Object obj1 = new Object();

IFace obj2 = new CFace();

//Here

}

}

则在 //Here处插入哪个代码将不出现编译和运行错误。

A.obj1=obj2;

B.b=obj;

C.obj=b;

D.obj1=b;


正确答案:ABD

更多相关问题