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;
r = new Rodent();
r = new Mouse();
r = new Gerbil();
r = 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.");
}
}
}
java私塾课后习题集下载:http://u.115.com/file/e65oeb94
页:
[1]