《Java2实用教程》课后习题参考答案 下载本文

public static void main(Strin g args[]) {

A a=new A(); a.setX(8);

System.ou t.println(a.getX()); B b=new B(); b.f(a);

System.ou t.println(a.getX()); } } 答: 8 100

15.使用接口有哪些注意事项?模仿例子4.27,编写一个类实现两个接口的程序。

答:①一个类使用接口时,要有implements 关键字,当一个类使用多个接口时,接口名要用逗号“,”隔开;

使用接口的类除abstract 类外,必须实现接口的所有方法,并且实现接口的方法时,方法名字、返回 类型、参数个数及类型必须与接口中的完全一致;类在实现接口时,方法体一定要用public 修饰,如 果接口方法的返回类型不是void 型,在类中实现接口时,方法体至少有一个return 语句。 ② interface 表面积 {

double allArea(double r); }

interface 体积 {

double volu(double r); }

class Sph implements 表面积,体积 {

double PI=3.14159;

public double allArea(double r) {

return 4*PI*r*r; }

public double volu(double r) {

return 4.0/3*PI*r*r*r; } }

public class Test {

public static void main(String args[]) {

double r=5.0; Sph a=new Sph();

System.out.println(\半径为5 的球的表面积是:\System.out.println(\半径为5 的球的体积是:\} }

16.编写一个类A,该类创建的对象可以调用方法f 输出英文字母表,然后再编写一个该类的子类B,要求 子类B 必须继承A 类的方法f(不允许重写),子类创建的对象不仅可以调用方法f 输出英文字母表,而 且调用子类新增的方法g 输出希腊字母表。 答: class A { int m; void f() {

for(m=65;m<91;m++)

System.out.print((char)m+\for(m=97;m<123;m++)

System.out.print((char)m+\System.out.println(\} }

class B extends A { int i; void g() {

for(i=913;i<930;i++)

System.out.print((char)i+\for(i=931;i<938;i++)

System.out.print((char)i+\for(i=945;i<962;i++)

System.out.print((char)i+\for(i=963;i<970;i++)

System.out.print((char)i+\

System.out.println(\} }

public class Test {

public static void main(String args[]) {

B b=new B();

System.out.println(\我调用方法f 输出英文字母表:\b.f();

System.out.println(\我调用方法g 输出希腊字母表:\b.g(); } }

17.编写一个异常类MyException,再编写一个类Studen t,该类有一个产生异常的方法public void speak(int m) throws MyException,要求参数m 的值大于100 0 时,方法抛出一个MyExceptio n 对象。 最后编写主类,在主类的mai n 方法中用Studen t 创建一个对象,让该对象调用spea k 方法。 答: class MyException extends Exception {

String str1; MyException(int m) {

str1=m+\出现错误可能造成的原因是取值大于1000\}

public void showStr1() {

System.out.println(str1); } }

class Student {

public void speak(int m) throws MyException {

if(m>1000) {

MyException exception=new MyException(m); throw exception; }

else

System.out.println(m); } }

public class Test {

public static void main(String agrs[]) { int m;

Student stu1=new Student(); m=987; try {

stu1.speak(m); m=1234; stu1.speak(m); }

catch(MyException e) {

e.showStr1(); } } }

18.编写一个类,该类有一个方法public int f(int a,int b),该方法返回a 和b 的最大公约数。然后再 编写一个该类的子类,要求子类重写方法f,而且重写的方法将返回a 和b 的最小公倍数。要求在重写 的方法的方法体中首先调用被隐藏的方法返回a 和b 的最大公约数m,然后将乘积(a*b)/ m 返回。要求 在应用程序的主类中分别使用父类和子类创建对象,并分别调用方法f 计算两个正整数的最大公约数 和最小公倍数。 答: class A {

public int f(int a,int b) { if(a

int temp=0; temp=a; a=b; b=temp;