下面是三段代码,其中我有两个地方看不大懂,请帮我解答下,谢谢~ 第一段
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));  //问题:这里的apoint.x我知道是调用方法时传进来的值,那么x是哪里值??
}
public String toString(){
return Double.toString(x) + ", " + y;
}
}
第二段
class Line{
Point start; 
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);  //问题:这里再次为 start 和 end 对象赋了值,那上面赋的值怎么办??这在计算机中是怎么一回事?
end =  new Point(xEnd, yEnd);
}double length(){
return start.distance(end);  //问题1:这里start之所以能调用 point 中定义的方法是因为,在类 line 的作用域中,创建了属于 point 的 start 和 end 的对象? 问题2:这里的 start 和 end 是指哪个构造函数里的值啊??
}
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));
}
}这段代码我看了好几天,还是不能看懂,有没有好心人,加我QQ帮我解释下,整段代码在机器中运行的过程,我的QQ是:122638074

解决方案 »

  1.   

    能不能说的详细点~~因为point中的 x 被第三段都赋了不同的值,所以我不清楚,是哪个值。
    而 line 的2个构造函数在第3段中都被调用了 start 和 end 在 分别有2个值
      

  2.   

    1.X是你这个类里面的数据,这个类里面的所有方法都可以使用
    2.这两个是Line类的构造方法。。第2个是构造方法重载,不会覆盖掉上面的值、当你用这个类申明对象是,可以调用两种不同的构造方法两个构造放的参数不同,Line lin=new Line(final Point start, final Point end)
    Line lin=new Line(double xStart, double yStart, double xEnd, double yEnd) ,意思就是可以有两种构造方法,不会重复和覆盖,看你传递什么样的参数就调用不同的构造方法
    3.问题1:这里start之所以能调用 point 中定义的方法是因为,在类 line 的作用域中,创建了属于 point 的 start 和 end 的对象? 
      之所以可以调用start和end对象是因为start和end对象都是在Line类里面定义的属于point的对象,所以任何Line类的方法都可以访问start和end.问题2:这里的 start 和 end 是指哪个构造函数里的值啊?? Point start; 
    Point end;  就是没有初始化的值,当你调用构造方法时根据你调用的构造方法来初始话start 和 end的值是什么值
    这里就是什么值
    Line(final Point start, final Point end){ 
    this.start = new Point(start); 
    this.end = new Point(end);