(完整word版)Java-2实用教程(第5版)习题解答 下载本文

} class E {

public static void main(String args[]) { A.f(); // D } }

6.下列代码中标注的(A,B,C,D)中,哪一个是错误的?b

abstract class Takecare {

protected void speakHello() {} //A public abstract static void cry(); //B static int f(){ return 0 ;} //C abstract float g(); //D }

7.下列程序中注释的哪个代码(A,B,C,D)是错误的(无法通过编译)?d

abstract class A { abstract float getFloat (); //A void f() //B { } }

public class B extends A {

private float m = 1.0f; //C private float getFloat () //D { return m; } }

8.将下列哪个代码(A,B,C,D)放入程序中标注的【代码】处将导致编译错误?b

A. public float getNum(){return 4.0f;} B. public void getNum(){ }

C. public void getNum(double d){ }

D. public double getNum(float d){return 4.0d;}

class A {

public float getNum() { return 3.0f; } }

public class B extends A { 【代码】 }

9.对于下列代码,下列哪个叙述是正确的?a

A. 程序提示编译错误(原因是A类没有不带参数的构造方法) B. 编译无错误,【代码】输出结果是0。 C. 编译无错误,【代码】输出结果是1。 D. 编译无错误,【代码】输出结果是2。

class A { public int i=0; A(int m) { i = 1; } }

public class B extends A { B(int m) { i = 2; }

public static void main(String args[]){ B b = new B(100);

System.out.println(b.i); //【代码】 } }

1.C。2.D。3.CD。4.D。5.B。6.B。7.D。8.B。9.A。 三、阅读程序

1.请说出E类中【代码1】,【代码2】的输出结果。

class A {

double f(double x,double y) { return x+y; } }

class B extends A { double f(int x,int y) { return x*y; } }

public class E {

public static void main(String args[]) { B b=new B();

System.out.println(b.f(3,5)); //【代码1】 System.out.println(b.f(3.0,5.0)); //【代码2】 } }

2.说出下列B类中【代码1】,【代码2】的输出结果。

class A {

public int getNumber(int a) { return a+1; } }

class B extends A {

public int getNumber (int a) { return a+100; }

public static void main (String args[]) { A a =new A();

System.out.println(a.getNumber(10)); //【代码1】 a = new B();

System.out.println(a.getNumber(10)); //【代码2】 } }

3.请说出E类中【代码1】~【代码4】的输出结果。

class A {

double f(double x,double y) { return x+y; }

static int g(int n) { return n*n; } }

class B extends A {

double f(double x,double y) { double m = super.f(x,y); return m+x*y; }

static int g(int n) { int m = A.g(n); return m+n; } }

public class E {

public static void main(String args[]) { B b = new B();

System.out.println(b.f(10.0,8.0)); //【代码1】 System.out.println(b.g(3)); //【代码2】 A a = new B();

System.out.println(a.f(10.0,8.0)); //【代码3】

System.out.println(a.g(3)); //【代码4】 } }

4.请说出E类中【代码1】~【代码3】的输出结果。

class A { int m; int getM() { return m; }

int seeM() { return m; } }

class B extends A { int m ; int getM() { return m+100; } }

public class E {

public static void main(String args[]) { B b = new B(); b.m = 20;

System.out.println(b.getM()); //【代码1】 A a = b;

a.m = -100; // 上转型对象访问的是被隐藏的m

System.out.println(a.getM()); //【代码2】上转型对象调用的一定是子类重写的getM()方法 System.out.println(b.seeM()); //【代码3】子类继承的seeM()方法操作的m是被子类隐藏的m } }

1.【代码1】:15.0。【代码2】:8.0。 2.【代码1】:11。【代码2】:11。 3.【代码1】:98.0。【代码2】:12。【代码3】:98.0。【代码4】:9。 4.【代码1】:120。【代码2】:120。【代码3】:-100。 四、编程题

设计一个动物声音“模拟器”,希望模拟器可以模拟许多动物的叫声。要求如下:

? 编写抽象类Animal