import java.lang.Math;//导入Math类
class PointLine
{
public static void main(String[] args)
{
Point ps = new Point(-2,5);
Point pe = new Point(7,9);
Line l = new Line(ps,pe);
ps.PrintP();
pe.PrintP();
l.PrintL();//输出直线l的信息
}
}
//定义坐标点类
class Point
{
//点的横坐标和纵坐标
public double x;
public double y;
public Point(){x = 0; y = 0;}
public Point(double x,double y) {this.x = x; this.y = y;}
public void PrintP()
{
System.out.println(this.getClass().toString()+"Point:("+x+","+y+")");
}
}
class Line extends Point //利用坐标点类定义直线类, 其基类的数据成员表示直线的中点
{
private Point pt1;
private Point pt2; //直线的两个端点
public Line(Point pts, Point pte)//构造函数分别用参数初始化对应的端点及由基类属性描述的中点
{
super(((pts.x+pte.x)/2), ((pts.y+pte.y)/2));
pt1 = pts;
pt2 = pte;
}
public double Dx(){return pt2.x-pt1.x;}
public double Dy(){return pt2.y-pt1.y;}
public double Length()//计算直线的长度
{
double dx = Dx();
double dy = Dy();
return (Math.sqrt(dx*dx + dy*dy));
}
public void PrintL()//输出直线的两个端点和直线长度
{
System.out.println("直线两端点:pt1=("+pt1.x+","+pt1.y+"),pt2=("+pt2.x+","+pt2.y+")");
System.out.println("直线的中点:Middle=("+x+","+y+")");
System.out.println("直线长度:Length="+Length());
}
}
/*
开始子类的初始化出现了点小问题,
没发现,就在CSDN上发帖;
在那等别人回帖,
反正也没事,就又看了一遍。
那是相当的郁闷啊,
就是字母敲错的事。
之前也遇到过这样的情况(还不少)
CSDN虽然给我们提供了很好的学习环境,
我们也不能把锻炼自己解决问题的机会给丢了。
惭愧、、、、、、、、、、、、、、
*/