java习题解答 联系客服

发布时间 : 星期日 文章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,则此类中的成员可供什么样的包引用?