class Line
{ class Point //内部类Point定义
{ private int x,y; //内部类的成员变量
public Point(int x,int y) //内部类的构造方法(有参数)
{ this.x=x;
this.y=y;
}
public Point() //内部类的构造方法(无参数)
{ this(1,1); }
public int getX() //内部类的成员方法
{ return this.x; }
public int getY() //内部类的成员方法
{ return this.y; }
private double getDistance(Point p) //内部类的成员方法(求到p点的距离)
{ double xl,yl;
xl=x-p.getX();
yl=y-p.getY();
return Math.sqrt(xl*xl+yl*yl);
}
double getDistance() //内部类的成员方法(求到原点的距离)
{ return(Math.sqrt(x*x+y*y)); }
public void print() //内部类的成员方法(显示点坐标)
{ System.out.println("("+x+","+y+")");}
}
Point startPoint,endPoint; //外部类的成员变量
public Line(int x1,int y1,int x2,int y2)//外部类的构造方法
{ startPoint=new Point(x1,y1);
endPoint= new Point(x2,y2);
}
public Line(Point sp,Point ep) //外部类的构造方法
{ startPoint=sp;
endPoint=ep;
}
public Line() //外部类的构造方法
{ this(0,0,1,1); }
public Point getStartPoint() //外部类的成员方法
{ return startPoint; }
public Point getEndPoint() //外部类的成员方法
{ return endPoint; }
public double getLength() //外部类的成员方法(求直线的长度)
{ return endPoint.getDistance( ); }
public void print() //外部类的成员方法(显示直线信息)
{ System.out.print("起点位置:");
startPoint.print();
System.out.print("终点位置:");
endPoint.print();
System.out.println("直线长度:"+getLength());
}
}
//测试用主类
public class TestLine
{
public static void main(String[] args)
{
Line l1=new Line(10,10,20,30);
l1.print();
Line.Point p1=代码; //利用l1对象实例化p1
p1.print();
Line.Point p2=new Line().new Point(30,30);
p2.print();
System.out.println("p2到原点的距离="+p2.getDistance());
}
}