请各位给我指点一下。

dcq 2003-06-02 11:51:55
我有如下三个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?

...全文
31 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
toto1980 2003-06-03
  • 打赏
  • 举报
回复
java编程思想中有详细介绍,讲得很清楚建议你看看.
dcq 2003-06-03
  • 打赏
  • 举报
回复
teaky2002:谢谢你的回复!
但我还有一点不明白,请指教,问题一中,为什么说在调用另外一个构造函数呢?能给我分析具体一下吗,小弟对this在这儿的用法不甚了解?
问题二中“在对象跟字符串连接时,系统会默认调用对象的toString()函数”这是规律吗?
mymoto 2003-06-03
  • 打赏
  • 举报
回复
问题一:
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方法(记忆中的,怕误倒你,建议你查一下书中的具体说法)


dcq 2003-06-03
  • 打赏
  • 举报
回复
谢谢各位,我明白了.
teaky2002 2003-06-02
  • 打赏
  • 举报
回复
问题一:调用另一个构造函数。


问题二:在对象跟字符串做连接的时候,系统会默认调用对象的toString()函数,所以你不用明确调用toString();

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧