100%

luodis
江湖少侠
江湖少侠
  • UID9237
  • 注册日期2011-04-19
  • 最后登录2011-09-30
  • 粉丝0
  • 关注0
  • 发帖数121
  • 个人主页
  • 来自
  • QQ
  • 生日0-0-0
  • 家乡
  • 铜币0枚
  • 威望707点
  • 银元0个
阅读:1364回复:0

java私塾跟我学-java篇 第4章课后答案

楼主#
更多 发布于:2011-09-02 14:12
java私塾跟我学-java篇 第4章课后答案
 
4.1创建一个构造方法重载的类,并用另一个类调用。
public class T1 {
   public static void main(String[] args) {
      Test t1 = new Test();
      System.out.println(t1.toString());
      Test t2 = new Test(5);
      System.out.println(t2.toString());
      Test t3 = new Test(7, 8);
      System.out.println(t3.toString());
   }
}

// 构造方法重载的类
class Test {
   int x, y;

   public Test() {
      this.x = 0;
      this.y = 0;
   }

   public Test(int x) {
      this.x = x;
      this.y = 0;
   }

   public Test(int x, int y) {
      this.x = x;
      this.y = y;
   }

   public String toString() {
      return \"(\" + x + \",\" + y + \")\";
   }
}4.2创建Rodent(啮齿动物):Mouse(老鼠),Gerbil(鼹鼠),Hamster(大颊鼠)等的的一个继承分级结构。在基础类中,提供适用于所有Rodent的方法,并在衍生类中覆盖它们,从而根据不同类型的Rodent采取不同的行动。创建一个Rodent数组,在其中填充不同类型的Rodent,然后调用自己的基础类方法,看看会有什么情况发生。public class T2 {
   public static void main(String[] args) {
      Rodent[] r = new Rodent[4];
      r[0] = new Rodent();
      r[1] = new Mouse();
      r[2] = new Gerbil();
      r[3] = new Hamster();
      for (Rodent rr : r) {
         rr.test();
      }
   }
}

class Rodent {
   public void test() {
      System.out.println(\"Rodent里的方法体test\");
   }
}

class Mouse extends Rodent {
   public void test() {
      System.out.println(\"Mouse里的方法体test\");
   }
}

class Gerbil extends Rodent {
   public void test() {
      System.out.println(\"Gerbil里的方法体test\");
   }
}

class Hamster extends Rodent {
   public void test() {
      System.out.println(\"Hamster里的方法体test\");
   }
}4.3编写MyPoint的一个子类MyXYZ,表示三维坐标点,重写toString方法用来显示这个对象的x、y、z的值,如显示(1,2,3),最后用main方法测试。import cn.yufei.c3.MyPoint;

public class T3 {
   public static void main(String[] args) {
      MyXYZ m = new MyXYZ();
      m.setX(4);
      m.setY(8);
      m.setZ(7);
      System.out.println(m);
   }
}

class MyXYZ extends MyPoint {
   private int z;

   public int getZ() {
      return z;
   }

   public void setZ(int z) {
      this.z = z;
   }


   public String toString() {
      return \"(\" + getX() + \",\" + getY() + \",\" + z + \")\";
   }
}4.4 E 代码运行,屏幕上看到null

因为构造函数没有返回值,是为了区分构造函数和其它方法。在构造函数前加上void,编译可以通过,但编译器把它认为是方法,而不是构造函数,当然也无法在new的时候自动调用。
 
4.5 D 编译不通过
 
4.6 D line 7

new谁就调用谁的方法
 
4.7 运行结果:x=4

(注意b=false中用的是赋值运算符,而不是比较运算符)
 
4.8 C Hello Y
 
4.9 用到多线程的相关知识,留待以后解决
 
4.10 考察Math里的abs、floor、ceil、round方法

运行结果:

a=7

b=8

c=7

d=8

e=7

f=6

g=7

h=6
 
4.11 a)和d)
 
4.12 运行结果:t equals 8
 
4.13 CD
 
4.14

改法一:

static int a=9;

public static void show(int a)

改法二:

A t=new A();

t.a+=t.a;

t.show(t.a);
 
4.15 设计一个Circle类,其属性为圆心点(类型为前面设计的类MyPoint)和半径,并为此类编写以下三个方法:
一是计算圆面积的calArea()方法
二是计算圆周长的calLength()方法
三是boolean inCircle(MyPoint mp)方法,功能是测试作为参数的某个点
是否在当前对象圆内(圆内,包括圆上返回true;在圆外,返回false)。
package cn.yufei.c4;

import cn.yufei.c3.MyPoint;

public class Circle {

   MyPoint mpt = new MyPoint();
   double r;

   public double calArea() {
      return Math.PI * r * r;
   }

   public double calLength() {
      return 2 * Math.PI * r;
   }

   public boolean inCircle(MyPoint mp) {
      if (Math.hypot(mp.getX() - mpt.getX(), mp.getY() - mpt.getY()) <= r) {
         return true;
      }
      return false;
   }

   public static void main(String[] args) {
      Circle c = new Circle();
      c.mpt.setX(4);
      c.mpt.setY(0);
      c.r = 6;
      MyPoint mp = new MyPoint();
      mp.setX(9);
      mp.setY(11);
      boolean b = c.inCircle(mp);
      System.out.println(\"Centre of the circle :\" + c.mpt + \" \nradius:\" + c.r);
      System.out.println(\"Area:\" + c.calArea() + \"\n\" + \"Length:\" + c.calLength());

      if (b) {
         System.out.println(mp + \"is in circle.\");
      } else {
         System.out.println(mp + \"is not in circle.\");
      }
   }
}
游客

返回顶部