100%
阅读:1426回复:0
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.\"); } } } |
|