请各位给我指点一下。
我有如下三个java程序,现有几个问题请教:
//MyPoint.java
public class MyPoint
{
private int x,y;
public MyPoint(int x,int y)
{
this.x = x;
this.y = y;
}
public MyPoint()
{
this(0,0);
}
public String toString()
{
return "(" + x +"," + y + ")";
}
}
//MyCircle.java
public class MyCircle
{
private static int counter = 1;
private MyPoint p;
private int radius;
private int index;
public MyCircle(MyPoint p,int radius)
{
this.p = p;
this.radius = radius;
index = counter++;
}
public MyCircle(MyPoint p)
{
this(p,10); //这儿为问题一
}
public void centerAt()
{
System.out.println("Center at: " + p); //这儿为问题二
}
public void printArea()
{
System.out.println("Circle " + index + " with area " + Math.PI*radius*radius);
}
}
//CircleDemo.java
public class CircleDemo
{
public static void main(String args[])
{
MyPoint p1 = new MyPoint(10,10);
MyPoint p2 = new MyPoint();
MyCircle c1 = new MyCircle(p1,50);
MyCircle c2 = new MyCircle(p2);
c1.printArea();
c1.centerAt();
c2.printArea();
c2.centerAt();
}
}
运行CircleDemo 程序的输出结果为:
Circle 1 with area 7853.981633974483
Center at :(10,10)
Circle 2 with area 314.1592653589793
Center at :(0,0)
问题一:this(p,10)这句话应该如何理解?
问题二:为什么不调用p对象的toString()方法来生成字符串而直接使用p?
问题点数:20、回复次数:5Top
1 楼teaky2002(种田硬手)回复于 2003-06-02 23:58:43 得分 10
问题一:调用另一个构造函数。
问题二:在对象跟字符串做连接的时候,系统会默认调用对象的toString()函数,所以你不用明确调用toString();
Top
2 楼mymoto(忽忽)回复于 2003-06-03 00:04:23 得分 10
问题一:
this(p,10)就是用于这个public MyCircle(MyPoint p)构造函数中,说明在不给顶radius的情况下,那么就调用public MyCircle(MyPoint p,int radius)构造函数,并且把radius给一个固定数值为10,懂了吗?
问题二:
"Center at: " + p,当object和string像加的时候,object会自动被转化为string类型相加得到结果,也就是自动调用object的toString方法(记忆中的,怕误倒你,建议你查一下书中的具体说法)
Top
3 楼dcq(悠悠)回复于 2003-06-03 00:10:33 得分 0
teaky2002:谢谢你的回复!
但我还有一点不明白,请指教,问题一中,为什么说在调用另外一个构造函数呢?能给我分析具体一下吗,小弟对this在这儿的用法不甚了解?
问题二中“在对象跟字符串连接时,系统会默认调用对象的toString()函数”这是规律吗?Top
4 楼toto1980(^涛^)回复于 2003-06-03 00:16:43 得分 0
java编程思想中有详细介绍,讲得很清楚建议你看看.Top
5 楼dcq(悠悠)回复于 2003-06-03 08:47:02 得分 0
谢谢各位,我明白了.Top




