Java期末考试试卷

  • 格式:doc
  • 大小:95.00 KB
  • 文档页数:5

1

一、选择题(必做题)

【本题满分20分】

1. 为AB类的一个无形式参数无返回值的方法method书写方法头,使得使用类名AB作为前缀就可以调用它,该方法头的形式为( A )。

A、static void method( ) B、public void method( )

C、final void method( ) D、abstract void method( )

2. 在Java中,一个类可同时定义许多同名的方法,这些方法的形式参数的个数、类型或顺序各不相同,传回的值也可以不相同。这种面向对象程序特性称为(C )。

A、隐藏 B、覆盖 C、重载 D、Java不支持此特性

3. 下列关于修饰符混用的说法,错误的是( ):

A.abstract不能与final并列修饰同一个类 B.abstract类中不可以有private的成员

C.abstract方法必须在abstract类中 D.static方法中能处理非static的属性

4. 在JAVA中,类Worker是类Person的子类,Worker的构造方法中有一句“super()“,该语句( )

A.调用类Worker中定义的super()方法 B.调用类Person中定义的super()方法

C.调用类Person的构造函数 D.语法错误

5. 给出下列代码,如何使成员变量m 被方法fun( )直接访问?

class Test

{

private int m;

public static void fun( )

{

...

}

}

A)将private int m 改为protected int m

B)将private int m 改为 public int m

C)将private int m 改为 static int m

D)将private int m 改为 int m

《Java面向对象程序设计》期末考试

2 6. 在JAVA语言中,下面关于类的描述正确的是( )。

B.一个超类可以有多个子类

C.子类可以使用超类的所有

D.子类一定比超类有更多的成员方法

7. 读程序写结果:

class A

{

public int f(int x)

{ return x+1; }

}

class B extends A

{

Public int f(int x)

{ return x*x; }

}

public class E

{

Public static void main(String args[])

{ A a= new B( );

Int m= a.f(10);

System.out.println(m);

}

8. 读程序写结果:

class First{

public First(){

show();

}

public void show( ){

System.out.println(“I love C++!”);

}

}

public class Second extends First{

public void show(){

System.out.println(“I love Java!”);

}

public static void main(String[ ] args){

new Second( );

}

}

3 9. 读程序写结果:

class A

{

int a;

A(int b)

{a=b;}

void show()

{System.out.println(“a=”+a);}

}

public class Class1

{

public static void main (String args[])

{

A obj=new A(12345);

boolean b=false;

char ch=97;

obj.show();

System.out.println(“b=”+b+”\tch=”+ch);

}

}

10. public class Test1 {

public static void changeStr(String str){

str="welcome";

}

public static void main(String[] args) {

String str="1234";

changeStr(str);

System.out.println(str);

}

}

二、选做题

【本题满分10分】

1. 编写一个类,该类对象为飞机,飞机汽油储备充足时可以起飞。可以起飞时,在命令行中输出“汽油储备量充足,飞机可以启动”。程序运行效果图如下所示:

4 【本题满分20分】

2. 设计一个程序,其功能是从命令行输入整数字符串,再将该整数字符串转换为整型,输入的数据可能具有以下格式、

12345

123 45

1234xyz456

提示:程序通过命令行输入字符串,可能会产生IOException异常,所以程序使用catch(IOException e)来捕获这个可能产生的异常,并且输出提示信息。而将字符串转换为整数的时候,可能会产生NumberFormatException类型的异常,程序中使用catch(NumberFormatException ne)来捕获这个可能发生的异常,并且提示用户输入格式有错。

输入一个整数字符串代码如下:

BufferedReader in=new BufferedReader(new InputStreamReader (System.in));

int a=Integer.parsenInt(in.readLine());

【本题满分20分】

3. 定义Biology(生物)、Animal(动物)、Man(人)3个接口,其中Biology声明了breath()抽象方法,Animal接口声明了hasSex()和eat()抽象方法,Man接口声明了think()和study()抽象方法。定义NormalMan类实现上述3个接口,实现它们声明的抽象方法(仅显示相应的功能信息)。

提示:在Java中,类只允许单重继承,但一个类可以实现多个接口,从而达到多重继承的目的。在Biology、Animal和Man接口中,仅声明抽象方法。NormalMan类实现Biology、Animal和Man接口。必须实现其中声明的所有抽象方法。

5 【本题满分30分】

4. 设计一个学生类Student,其属性有name(姓名)、age(年龄)和degree(学位)。由Student类派生出本科生类Undergraduate和研究生类Graduate,Undergraduate类增加属性specialty(专业),研究生类增加属性direction(研究方向)。每个类都有show( )方法,用于输出属性信息。程序运行效果如下图所示:

提示:Student类的构造方法仅初始化name、age和degree,Undergraduate和Graduate类的构造方法除调用Student类的构造方法外,还分别需要初始化自己新增加的成员变量specialty和direction.

Student类的show()方法仅需要输出name、age和degree的值,Undergraduate和Graduate类的show()方法除调用Student类的show()方法外,还分别需要输出新增加的成员变量specialty和direction的值。

【本题满分30分】

5. 编写程序,模拟银行账户功能。要求如下:

属性:账号(account)、储户姓名(name)、地址(address)、存款余额(balance)、最小余额(minBalance)

方法:存款(deposit)、取款(withdraw)、查询(query)

根据用户操作显示储户相关信息。如存款操作后,显示储户原有余额、今日存款数额及最终存款余额;取款时,若最后余额小于最小余额,拒绝取款,并显示“至少保留余额:XXX”

程序执行效果如下图所示: