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<point.length ;i++ )
		{
			for (int j=i+1;j<point.length ;j++,k++ )
			{
				line[k] =new LineDemo(point[i],point[j]);
			}
		}

	}

    //输出所有边长和对角线坐标及长度
	public void outAllLine(){
		for (LineDemo li : line)
		{
			li.out();
		}
	}

    //输出正方形四个角坐标
	public void outPoint(){
		for (int i=0;i<point.length ;i++ )
		{
			System.out.println("point["+i+"] = ("+point[i].getX()+","+point[i].getY()+")");
		}
	}
}

class ExtendsDemo 
{
	public static void main(String[] args) 
	{
		//测试点
		PointDemo[] pArr = new PointDemo[10];
		for (int i=0,j=10;i<pArr.length ;i++,j-- )
		{
			pArr[i]=new PointDemo(i,j);
		}
		for (PointDemo po: pArr )
		{
			System.out.println("("+po.getX()+","+po.getY()+")");
		}
		System.out.println("pointCount="+PointDemo.getPCount()+"\n");

		//测试线
		LineDemo line = new LineDemo();
		line.out();
		System.out.println("lineCount="+LineDemo.getLCount()+"\n");
		LineDemo line1 = new LineDemo(pArr[0],pArr[9]);
		line1.out();
		System.out.println("lineCount="+LineDemo.getLCount()+"\n");
		System.out.println("pointCount="+LineDemo.getPCount()+"\n");

		//测试正方形
		Square su = new Square(line1);
		System.out.println("显示所有坐标");
		su.outPoint();      //显示所有坐标
		System.out.println("显示所有边坐标及长度");
		su.outAllLine();    //显示所有边坐标及长度
		System.out.println("SquareCount="+Square.getSCount()+"\n");
	}
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值