public class TestCircleRectangle {
public static void main(String[] args)
{
GeometricObject1 circle=new Circle4();
GeometricObject1 rectangle=new Rectangle1(2,4);
displayGemotricObject1(circle);//使用静态的方法
displayGemotricObject1(rectangle);
}
public static void displayGemotricObject1(GeometricObject1 a)
{
if(a instanceof Circle4)
{
System.out.println("A circle "+((Circle4)a).toString());//注意((Circle4)a).toString()的格式
System.out.println("The radius is "+((Circle4)a).getRadius());
System.out.println("The area is "+((Circle4)a).getArea());
System.out.println("The diameter is "+((Circle4)a).getDiameter());
}else if(a instanceof Rectangle1)
{
System.out.println("\nA rectangle "+((Rectangle1)a).toString());
System.out.println("The area is "+((Rectangle1)a).getArea());
System.out.println("The perimeter is "+((Rectangle1)a).getPerimeter());
}
}
}
public class Rectangle1 extends GeometricObject1{
private double width;
private double height;
public Rectangle1()
{
}
public Rectangle1(double width,double height)
{
this.width=width;
this.height=height;
}
public Rectangle1(double width,double height,String color,boolean filled)
{
this.width=width;
this.height=height;
setColor(color);
setFilled(filled);
}
public double getWidth()
{
return width;
}
public void setWidth(double width)
{
this.width=width;
}
public double getHeight()
{
return height;
}
public void setHeight(double height)
{
this.height=height;
}
public double getArea()
{
return width*height;
}
public double getPerimeter()
{
return 2*(width+height);
}
}
public class GeometricObject1 {
private String color="white";
private boolean filled;
private java.util.Date dateCreated;
public GeometricObject1()
{
dateCreated=new java.util.Date();
}
public GeometricObject1(String color,boolean filled)
{
dateCreated=new java.util.Date();
this.color=color;
this.filled=filled;
}
public String getColor()
{
return color;
}
public void setColor(String color)
{
this.color=color;
}
public boolean isFilled()
{
return filled;
}
public void setFilled(boolean filled)
{
this.filled=filled;
}
public java.util.Date getDateCreated()
{
return dateCreated;
}
public String toString()
{
return "created on "+dateCreated+"\ncolor: "+color+" and filled: "+filled;
}
}
public class Circle4 extends GeometricObject1 {
private double radius;
public Circle4()
{
}
public Circle4(double radius)
{
this.radius=radius;
}
public Circle4(double radius,String color,boolean filled)
{
this.radius=radius;
setColor(color);
setFilled(filled);
}
public double getRadius()
{
return radius;
}
public void setRadius(double radius)
{
this.radius=radius;
}
public double getDiameter()
{
return 2*radius;
}
public double getArea()
{
return radius*radius*Math.PI;
}
public double getPerimeter()
{
return 2*radius*Math.PI;
}
public void printCircle()
{
System.out.println("The circle is created "+getDateCreated()+" and the radius is "+radius);
}
}