发布时间 : 星期日 文章java习题解答更新完毕开始阅读71ab28dd680203d8ce2f24a5
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)成员。
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,则此类中的成员可供什么样的包引用?