java继承实例1

/**
 *
java继承实例。


定义了一个点类point,然后线条类line继承了point类,正方形类square继承line类。

 */

//点类
class PointDemo
{
	private int x;
	private int y;
	private static int pCount=0;

	//默认初始化坐标点(0,0),坐标点数计数+1
	PointDemo(){
		this.x=0;
		this.y=0;
		pCount++;
	}

	//带有x,y坐标参数构造函数,坐标点数计数+1
	PointDemo(int x, int y){
		this.x=x;
		this.y=y;
		pCount++;
	}
  
    //设置坐标x,y值
    public void setPoint(int x,int y){
		this.x=x;
		this.y=y;
	}

	//返回获取X,Y坐标值
	public int getX(){return x;}
	public int getY(){return y;}

	//返回程序累积坐标计数
	public static int getPCount(){return pCount;}
	
}

//行类继承点类
class LineDemo extends PointDemo
{
	private PointDemo po1;
	private PointDemo po2;
	private float range;
	private static int lCount=0;
    
	//返回程序累积线数计数
	public static int getLCount(){return lCount;}

	//默认空参构造函数,默认坐标(0,0),(4,3),初始化两坐标之间的长度,线数计数+1
	LineDemo(){
		po1=new PointDemo();
		po2=new PointDemo(4,3);
		setRange();
		lCount++;
	}

	//两坐标参数构造函数,初始化两坐标和坐标之间的长度,线数计数+1
	LineDemo(PointDemo po1,PointDemo po2){
		this.po1=po1;
		this.po2=po2;
		setRange();
		lCount++;
	}

    //返回获取两点坐标值
	public PointDemo getPo1(){return po1;}
	public PointDemo getPo2(){return po2;}

	//设置两点之间的长度
	public void setRange(){ 
		range=(float)Math.sqrt(Math.pow(Math.abs(po2.getX()-po1.getX()),2)+Math.pow(Math.abs(po2.getY()-po1.getY()),2));;
	}
	public float getRange(){return range;}

	//输出两点坐标及两点之间的距离
	public void out(){
		System.out.println("___________________________");
		System.out.println("("+po1.getX()+","+po1.getY()+")");
		System.out.println("("+po2.getX()+","+po2.getY()+")");
		System.out.println("range="+range);
		System.out.println("===========================");
	}
}

//正方型类
/*
(X1,Y1),(X2,Y2),(X3,Y3),(X4,Y4)
A = X2-X1,     B =  Y2-Y1;
X3  =   X1+(A-B)     =   X1+(X2-X1-Y2+Y1)   =    X2-Y2+Y1;
Y3  =   Y1+A+B       =   Y1+X2-X1+Y2-Y1     =    X2-X1+Y2;
X4  =   -(X2-(A-B))  =   -(X2+Y2-Y1-X2+X1)  =    Y1-X1-Y2;
Y4  =   Y2+(A-B)     =   Y2+X2-X1-Y2+Y1     =    X2-X1+Y1;

*/
class Square extends LineDemo
{
	private LineDemo[] line = new LineDemo[6];
	private PointDemo[] point = new PointDemo[4];
	private static int sCount=0;

    //返回累积正方形个数计数
	public static int getSCount(){return sCount;}

    //空参构造函数,默认初始化正方形四个角坐标及边长和周长的长度,正方形个数计数+1
	Square(){
		super();
		setSquarePoint();
		setSquareLine();
		sCount++;
	}

    //两坐标点参数构造函数,初始化正方形四个角坐标及边长和周长的长度,正方形个数计数+1
	Square(PointDemo po1,PointDemo po2){
		super(po1,po2);
		point[0]=po1;
		point[1]=po2;
		setSquarePoint();
		setSquareLine();
		sCount++;
	}

    //一条边长做参数的构造函数,初始化正方形四个角坐标及边长和周长的长度,正方形个数计数+1
	Square(LineDemo line){
		super(line.getPo1(),line.getPo2());
		point[0]=line.getPo1();
		point[1]=line.getPo2();
		setSquarePoint();
		setSquareLine();
		sCount++;
	}

    //设置正方形四个角坐标
	private void setSquarePoint(){
		int x1=point[0].getX();
		int y1=point[0].getY();
		int x2=point[1].getX();
		int y2=point[1].getY();
		point[2] = new PointDemo(x2-y2+y1,x2-x1+y2);
		point[3] = new PointDemo(y1-x1-y2,x2-x1+y1);
	}

    //设置正方形所有边长和对角线坐标及长度
	private void setSquareLine(){
		for (int i=0,k=0;i

你可能感兴趣的:(JAVA,java继承)