Java继承及接口的使用

平台:ubuntu14.04

环境:eclipse+java1.7

1.学习java的继承及类接口的使用

2.使用多参数关键字运算符:...

3.手动修改并使用java的垃圾收集机制

java中继承所用关键字:extends;接口继承所有关键字:implements

java不像C++一样允许多继承;因此,增加了接口,用来实现多继承机制,这一点同C#。

使用实例如下:

例:定义点类,从点类派生矩形类和圆形类,主程序实现用同一个方法显示矩形和圆形的面积。

Point类

package com.anson.java;

/**
 * Point类
 * @author anson
 *
 */
public class Point {
	private double x,y;//成员变量
	
	/**
	 * 无参构造
	 */
	public Point()
	{
		
	}
	/**
	 * 有参构造
	 * @param x
	 * @param y
	 */
    public Point(double x,double y)
    {
    	this.x=x;
    	this.y=y;
    }
    /**
     * 返回横轴坐标
     * @return
     */
    public double GetX()
    {
    	return this.x;
    }
    /**
     * 返回纵轴坐标
     * @return
     */
    public double GetY()
    {
    	return y;
    }
    /**
     * 返回点坐标
     * @return
     */
    public Point GetPoint()
    {
    	return this;
    }
    
    /**
     * finalize()方法的调用
     */
    protected void finalize() throws Throwable
    {
    	try
    	{
			super.finalize();
			System.out.println("Object"+this+"Disposed");
		}
    	catch (Throwable e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
    }
}

Calc类接口

package com.anson.java;

/**
 * 面积计算类接口
 * @author anson
 *
 */
public interface Calc {
	public void CalcArea();//计算面积
	public double GetArea();//返回面积
}

矩形类

package com.anson.java;

/**
 * 矩形类
 * @author anson
 *
 */
public class Rectangle extends Point implements Calc{
	private double width;//长
	private double height;//高
	
	private double Area;//面积
	
	/**
	 * 无参构造
	 */
	public Rectangle()
	{
		this.width=0;
		this.height=0;
		this.Area=0;
	}
	/**
	 * 有参构造
	 */
	public Rectangle(Point point1,Point point2)
	{
		this.width=Math.abs(point1.GetY()-point2.GetY());
		this.height=Math.abs(point1.GetX()-point2.GetX());
	}
	/**
	 * 计算面积
	 */
	public void CalcArea()
	{
		this.Area=GetArea();
	}
	/**
	 * 返回面积
	 */
	public double GetArea()
	{
		return width*height;
	}
	/**
	 * 修改并调用java的垃圾收集器
	 */
	  protected void finalize() throws Throwable
	    {
	    	try
	    	{
				super.finalize();
				System.out.println("Object"+this+"Disposed");
			}
	    	catch (Throwable e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
	    }
}

圆形类(形式同矩形类)

package com.anson.java;
/**
 * 圆形类
 * @author anson
 *
 */
public class Circle extends Point implements Calc {
	
	private Point center;
	private double r;
	
	private double Area;
	
	public Circle()
	{
		this.center=new Point(0,0);
		this.r=0;
		this.Area=0;
	}
	
	public Circle(Point point,double r)
	{
		this.center=point;
		this.r=r;
		this.Area=0;
	}
	
	public void CalcArea()
	{
		this.Area=GetArea();
	}
	
	public double GetArea()
	{
		return Math.PI*(Math.pow(this.r,2));
	}
	
	protected void finalize() throws Throwable
	{
		super.finalize();
		System.out.println("Object"+this+"Disposed");
	}
}

主类Test类测试

package com.anson.java;

public class Test {

	/**
	 * 学习了java的继承,接口的实现
	 * 通过继承Point类,实现矩形类和圆类,继承接口实现计算面积
	 * 尝试手动修改使用java是垃圾收集机制
	 * 使用多参数运算符...
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		/**
		 * 矩形类实现
		 */
		Rectangle rect=new Rectangle(new Point(2,2),new Point(4,4));
		System.out.println("矩形面积:"+rect.GetArea());
		/**
		 * 圆形类实现
		 */
		Circle circle=new Circle(new Point(2,3),new Double(2));
		System.out.println("圆的面积:"+circle.GetArea());
		/**
		 * 多参数运算符使用
		 */
		Max(new double[] {1,2,3,4,5,6});
		
		/**
		 * 调用垃圾收集器
		 */
		System.gc();
	}

	/**
	 * 使用 ... 运算符,所参数运算符,这里相当与double[] numbers
	 * @param numbers
	 */
	public static void Max(double ... numbers)
	{
		if(numbers.length==0)
		{
			System.out.println("null");
		}
		
		double result=numbers[0];
		
		for(int i=1;i<numbers.length;i++)
		{
			if(result<numbers[i])
			{
				result=numbers[i];
			}
		}
		
		System.out.print("Max number is "+result+"\n");
	}
}

测试结果



  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值