本科Java题库 下载本文

14.Import语句和package语句的功能分别是什么? 三、选择题

1.下面关于封装性的描述中,错误的是( D )。

A.封装体包含属性和行为 B.被封装的某些信息在外不可见

C.封装提高了可重用性 D.封装体中的属性和行为的访问权限相同 2.下面关于类方法的描述,错误的是( B )。

A.说明类方法使用关键字static B.类方法和实例方法一样均占用对象的内存空间 C.类方法能用实例和类名调用 D.类方法只能处理类变量或调用类方法 3.下面关于包的描述中,错误的是( A )。 A.包是若干对象的集合 B.使用package语句创建包 C.使用import语句引入包 D.包分为有名包和无名包两种 4.下述哪些说法是正确的?( BC )

A.用static关键字声明实例变量 B.实例变量是类的成员变量 C.局部变量在方法执行时创建 D.局部变量在使用之前必须初始化 5.下面哪些代码段是正确的Java源程序?( BCD )

A.import java.io.*; B.import java.io.*;

package testpackage; class Person{/* do something... */}

public class Test{/* do something... */} public class Test{/* do something... */}

C.import java.io.*; D.package testpackage;

import java.awt.*; public class Test{/* do something... */} public class Test{/* do something... */} 四、判断题

1.类是一种类型,也是对象的模板。( √ ) 2.类中说明的方法可以定义在类体外。( × ) 3.实例方法中不能引用类变量。( × )

4.创建对象时系统将调用适当的构造方法给对象初始化。( √ )

5.使用运算符new创建对象时,赋给对象的值实际上是一个引用值。( √ )

6.对象赋值实际上是同一个对象具有两个不同的名字,它们都有同一个引用值。( √ ) 7.对象可作方法参数,对象数组不能作方法参数。( × ) 8.class是定义类的惟一关键字。( √ )

9.Java语言会自动回收内存中的垃圾。( √ ) 五、分析题

分析下面的程序,写出运行结果。 import java.awt.*; import java.applet.*; class MemberVar {

static int sn = 30; final int fn;

final int fk = 40; MemberVar() { fn = ++sn; }

}

public class Exercises5_1 extends Applet { public void paint(Graphics g) { MemberVar obj1 = new MemberVar(); MemberVar obj2 = new MemberVar();

g.drawString(\ g.drawString(\ g.drawString(\ g.drawString(\ } }

运行结果是:( ) obj1.fn=31 obj1.fk=40 obj2.fn=32 obj2.fk=40 六、改错题

1.下面的程序中有若干个语法错误,找出后请改正。 public class MyMainClass{

public static void main( ) {

TheOtherClass obj = new TheOtherClass(\ System.out.println(obj.name+' '+obj.gender+' '+obj.nationality);

}

System.out.println(\}

public class TheOtherClass{

private String name,gender,nationality;

public TheOtherClass(String name,String gender,String nationality) { this.name=name; this.gender=gender; this.nationality=nationality;

} }

改正后程序:

public class MyMainClass {

public static void main(String args[]) {

TheOtherClass obj = new TheOtherClass(\

System.out.println(obj.name + ' ' + obj.gender + ' ' + obj.nationality); System.out.println(\ } }

class TheOtherClass {

public String name, gender, nationality;

public TheOtherClass(String name, String gender, String nationality) {

this.name = name; this.gender = gender;

this.nationality = nationality; } }

2.下面的程序中有若干个语法错误,找出后请改正。 public class Car{ private String carName; public int mileage; private static final int TOP_SPEED=50; abstract void alert(); public static int getTopSpeed(){ return TOP_SPEED;

}

public static void setCarName(){ carName=\}

public static void setMileage(){ mileage=180; } }

改正后程序:

public abstract class Car { private String carName; public int mileage;

private static final int TOP_SPEED = 50; abstract void alert();

public static int getTopSpeed() { return TOP_SPEED; }

public void setCarName() { carName = \ }

public void setMileage() { mileage = 180; } }

一、填空题

1.在面向对象系统中,消息分为(公有消息)和(私有消息)两类。

2.类的访问控制符有(public)和(默认default)两种,(public)类具有跨包访问性而(default)类不能被跨包访问。

3.类成员的访问控制符有(public)、(protected)、(private)和默认四种。

Java语言面向对象高级程序设计 习 题 四

4.public类型的类成员可被(同一类)、同一包中的(子类与非子类)和不同包中的 (子类与非子类)的代码访问引用。

5.protected类型的类成员可被(同一类)、同一包中的(子类与非子类)和不同包中的(子类)的代码访问引用。

6.default类型的类成员只能被(同一类)、同一包中的(子类与非子类)的代码访问引用。 7.private类型的类成员只能被其所在类中的代码访问引用,它只具有(类)域访问性。

8.系统规定用(this())表示当前类的构造方法,用(super())表示直接父类的构造方法,在构造方法中两者只能选其一,且须放在第一条语句。

9.若子类和父类在同一个包中,则子类继承父类中的(public)、(protected)和(默认)成员,将其作为子类的成员,但不能继承父类的(private)成员。

10.若子类和父类不在同一个包中,则子类继承了父类中的(public)和(protected)成员,将其作为子类的成员,但不能继承父类的(默认)和(private)成员。

11.(子类对象)直接赋值给(父类对象)时,子类对象可自动转换为父类对象,(父类对象)赋值给(子类对象)时,必须将父类对象强制转换为子类对象。

12.Java的多态性主要表现在(方法重载)、(方法覆盖)和(变量覆盖)三个方面。

13.重写后的方法不能比被重写的方法有(更严格)的访问权限,重写后的方法不能比被重写的方法产生更多的异常。

14.Java语言中,定义子类时,使用关键字(extends)来给出父类名。如果没有指出父类,则该类的默认父类为(Object类)。

15.Java语言中,重载方法的选择是在编译时进行的,系统根据(参数个数)、(参数类型)和参数顺序寻找匹配方法。

16.实现接口中的抽象方法时,必须使用(完全相同)的方法头,并且还要用(public)修饰符。 17.接口中定义的数据成员均是(常量数据成员),所有成员方法均为(抽象方法)方法,且没有(构造)方法。

18.this代表(当前对象自身)的引用,super表示的是当前对象的直接父类对象。 19.如果一个类包含一个或多个abstract方法,则它是一个(abstract)类。

20.Java不直接支持多继承,但可以通过(接口)实现多继承。类的继承具有(传递)性。

21.没有子类的类称为(最终类),不能被子类重载的方法称为(最终方法),不能改变值的量称为常量,又称为(最终变量)。

22.一个接口可以通过关键字extends来继承(多个)其他接口。

23.接口中只能包含(public static final)类型的成员变量和(public abstract)类型的成员方法。

24.一般地,内部类又分为定义在方法体外的(成员类)和定义在方法体内的(局部类)两种。 25.静态内部类可直接通过外部类名引用,其一般格式是(new 外部类名.内部类构造方法( );)。 26.匿名类一般分为(语句匿名类)和(参数匿名)类两种。

27.面向对象的软件设计中,根据目的不同模式可分为(创建型)、(结构型)和(行为型)三种。 二、简答题

1.什么是继承?什么是父类?什么是子类?继承的特性可给面向对象编程带来什么好处?什么是单继承?什么是多重继承?

2.如何创建一个类的子类? 3.若在一个public类中的成员变量及成员方法的访问控制符为protected,则此类中的成员可供什么样的包引用?

4.什么是多态?使用多态有什么优点?Java中的多态有哪几种?重载方法与覆盖方法分别属于哪种多态?

5.什么是重载方法?什么是覆盖方法?它们的主要区别是什么?