平台: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");
}
}
测试结果