请进来看看~~我这问题不是很难

llm0528 2008-05-30 01:46:51
下面是三段代码,其中我有两个地方看不大懂,请帮我解答下,谢谢~

第一段
import static java.lang.Math.sqrt;
class Point {
double x;
double y;

Point(double xVal,double yVal){
x = xVal;
y = yVal;
}
Point(final Point oldPoint){
x = oldPoint.x;
y = oldPoint.y;
}
void move(double xDelta,double yDelta){
x += xDelta;
y += yDelta;
}
double distance(final Point aPoint){
return sqrt((x - aPoint.x)*(x - aPoint.x) + (y - aPoint.y)*(y - aPoint.y));
}
public String toString(){
return Double.toString(x) + ", " + y;
}
}
第二段
class Line{
Point start; //问题:我对这里创建的point类变量在概念上很模糊,这和第三段里的对象 start 和 end 是什么关系啊??难道对象可以重名??
Point end;

Line(final Point start, final Point end){
this.start = new Point(start);
this.end = new Point(end);
}
Line(double xStart, double yStart, double xEnd, double yEnd){
start = new Point(xStart, yStart);
end = new Point(xEnd, yEnd);
}

double length(){
return start.distance(end); //问题:这里的这个方法调用我完全不懂,为什么要用start去调用,什么意思呢??
}
public String toString(){
return"(" + start + "):(" + end + ")";
}
//后面是计算公式
Point intersects(final Line line1){
Point localPoint = new Point(0,0);

double num = (this.end.y - this.start.y)*(this.start.x - line1.start.x)-
(this.end.x - this.start.x)*(this.start.y - line1.start.y);

double denom = (this.end.y - this.start.y)*(line1.end.x - line1.start.x)-
(this.end.x - this.start.x)*(line1.end.y - line1.start.y);

localPoint.x = line1.start.x + (line1.end.x - line1.start.x)*num/denom;
localPoint.y = line1.start.y + (line1.end.y - line1.start.y)*num/denom;

return localPoint;
}
}
第三段
public class TryGeometry{
public static void main(String[] args){
Point start = new Point(0.0 , 1.0);
Point end = new Point(5.0 , 6.0);
System.out.println("Points created are "+ start + " and " + end);

Line line1 = new Line(start, end);
Line line2 = new Line(0.0, 3.0, 3.0, 0.0);
System.out.println("Lines created are " + line1 + " and " + line2);

System.out.println("Intersection is " + line2.intersects(line1));

end.move(1.0, -5.0);
System.out.println("Intersection is " + line1.intersects(line2));
}
}
...全文
115 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
chendabian 2008-05-31
  • 打赏
  • 举报
回复
class line和 class TryGeometry 是俩个类 所以呢 他们都有各自的 成员变量

start和end是类point的两个对象实例 他们是class line和 class TryGeometry的成员变量;

俩个类的成员变量之间没有什么特别的关系;叫什么名都没关系只要是point 类型就好了



tavor 2008-05-30
  • 打赏
  • 举报
回复
晕,这个是很简单的呀,估计那哥们表达的不是很容易理解而已,没啥可争辩的,
变量作用域在哪个语言里面都有呀,
llm0528 2008-05-30
  • 打赏
  • 举报
回复
很好~~~不同观点,大家来争论下,把这个知识点搞搞清楚~~~~
tavor 2008-05-30
  • 打赏
  • 举报
回复
对象在同一作用域内是不可重名,在不同作用域内是可重名的,但会使用最接近使用地方的作用域变量

偶不明白二楼在说啥,晕
llm0528 2008-05-30
  • 打赏
  • 举报
回复
那么请问,2楼的那句话该怎么理解,请看4楼我的疑问,请指教~~~
guoyy_neusoft 2008-05-30
  • 打赏
  • 举报
回复
2楼对
llm0528 2008-05-30
  • 打赏
  • 举报
回复
关于1楼和2楼的回答我有糊涂了,到底哪个人说的是对的??
“point是类,start和end是类point的两个对象实例(这里的意思就是说start 和 end是类point的对象咯?)。不可以重名,名字是 start和end;(既然不可以重名,那岂不是创建了2个start 和 end 嘛~~)”2楼的这句话不是很懂
goosman 2008-05-30
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 tavor 的回复:]
对于一 首先他们在不同的类里面,肯定是可以重名的了,只要不在同一个作用域,变量 就可以重名呀
对于二 线段的长度可不就是两个点之间的距离,所以它调起点计算与另一点距离的方法呀,这里的另一点就是终点呀
[/Quote]
学习一下界面制作
jdlsfl 2008-05-30
  • 打赏
  • 举报
回复
Point start; //问题:我对这里创建的point类变量在概念上很模糊,这和第三段里的对象 start 和 end 是什么关系啊??难道对象可以重名??
Point end;

point是类,start和end是类point的两个对象实例。不可以重名,名字是 start和end;

start.distance(end)是计算两个点的距离,你用 end.distance(start)计算也是一样的
tavor 2008-05-30
  • 打赏
  • 举报
回复
对于一 首先他们在不同的类里面,肯定是可以重名的了,只要不在同一个作用域,变量 就可以重名呀
对于二 线段的长度可不就是两个点之间的距离,所以它调起点计算与另一点距离的方法呀,这里的另一点就是终点呀

62,614

社区成员

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

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