9.数组元素作实参时对形参变量的数据传递是(单向值传递),数组名作实参时对形参变量的数据传递是(双向引用传递)。
10.对象作方法形参时,方法实参也用对象,实现(引用)调用。 11.( new)是一个特殊的方法,用于创建一个类的实例。
12.对象拷贝有(对象引用复制)、(浅复制)和(深复制)三种。
13.(类)方法不能直接访问其所属类的(实例)变量和(实例)方法,只可直接访问其所属类的(类)变量和(类)方法。
14.(类)变量在内存中只有一个拷贝,被该类的所有对象共享;每当创建一个实例,就会为(实例)变量分配一次内存,(实例)变量可以在内存中有多个拷贝,互不影响。
15.Java使用固定于首行的(package)语句来创建包。 16.在运行时,由java解释器自动引入,而不用import语句引入的包是(java.lang)。
17.发布Java应用程序或类库时,通常可以使用JDK中自带的(JAR)命令打包。 二、简答题
1.名词解释:OO、OOSE、OOA、OOD、OOP;抽象、对象、类、实例、方法、属性、消息、接口、封装、继承、多态性;模型、UML、类图、对象图、用例图、顺序图、协作图、状态图、活动图、包图、构件/组件图、部署图。
2.简述面向对象的基本思想、主要特征和基本要素。 3.为什么要对类进行封装?封装的原则是什么?
4.类的封装性、继承性和多态性各自的内涵是什么? 5.简述依赖、关联和聚集的区别。
6.什么是对象?什么是类?二者有何关系?
7.Java中类定义的一般格式是什么?定义类的修饰符有哪些?各自的特点是什么?
8.Java中成员变量定义的一般格式是什么?成员变量有哪些修饰符? 9.Java中成员方法定义的一般格式是什么?成员方法有哪些修饰符? 10.简述构造方法的特点与作用。
11.Java中创建对象的一般格式是什么?如何初始化对象?如何给对象赋值?
12.什么是类变量(静态变量)?什么是实例变量?它们的存储特性、访问方法、主要区别是什么?
13.什么是类方法(静态方法)?什么是实例方法?它们的存储特性、访问方法、主要区别是什么?
14.什么是包?如何创建包?如何引用包?
15.Import语句和package语句的功能分别是什么? 16.举例说明JAR包的创建、加载与运行方法。 三、选择题
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 som
ething... */}
public class Test{/* do something... */} public class Tes
t{/* do something... */}
C.import java.io.*; D.package testpackage;
import java.awt.*; public class Test{/* d
o 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(\ale\
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.设计(用UML的类图表示)并实现一点类Point,该类的构成包括点的x和y两个坐标,其构造方法、设置和修改坐标、求解两点距离的方法等,编写应用程序生成该类的对象并对其进行操作。
2.设计(用UML的类图表示)并实现一个矩形类Rectangle,包括其构造方法、求解矩形面积和周长的方法等,实例化后输出相应的信息。
3.计算出Fibonacci数列的前n项,Fibonacci数列的第一项和第二项都是1,从第三项开始,每项的值都是该项的前两项之和。即:
F(n) = F (n-1) + F(n-2) n≥3 F(1) = F(2) = 1 n=1,2
4.参照“图3-4”实现Student类的定义,然后生成该类的对象后进行相关操作。
第4章 Java语言面向对象高级程序设计
习 题 四
一、填空题
1.在面向对象系统中,消息分为(公有消息)和(私有消息)两类。 2.类的访问控制符有(public)和(默认default)两种,(public)类具有跨包访问性而(default)类不能被跨包访问。
3.类成员的访问控制符有(public)、(protected)、(private)和默认四种。
4.public类型的类成员可被(同一类)、同一包中的(子类与非子类)和不同包中的 (子类与非子类)的代码访问引用。
5.protected类型的类成员可被(同一类)、同一包中的(子类与非子类)和不同包中的(子类)的代码访问引用。
6.default类型的类成员只能被(同一类)、同一包中的(子类与非子类)的代码访问引用。
7.private类型的类成员只能被其所在类中的代码访问引用,它只具有(类)域访问性。
8.系统规定用(this())表示当前类的构造方法,用(super())表示直接父类的构造方法,在构造方法中两者只能选其一,且须放在第一条语句。
9.若子类和父类在同一个包中,则子类继承父类中的(public)、(protected)和(默认)成员,将其作为子类的成员,但不能继承父类的(private)成员。
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库Java习题解答(3)在线全文阅读。
相关推荐: