1/1页1 跳转到查看:118
发新话题 回复该主题

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

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

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.");
      }
  }
}


TOP

 

java私塾课后习题集下载:http://u.115.com/file/e65oeb94

TOP

 
1/1页1 跳转到
发表新主题 回复该主题