Java实验(13) 正八边形类

来源:互联网 发布:windows 10 multiple 编辑:程序博客网 时间:2024/05/20 16:10

写一个正八边形类Octagon,要求从课本的GeometricObject类继承,并实现 Comparable和 Cloneable接口。

写一个测试类,测试Octagon类的所有可用方法。


abstract class GeometricObject {    private String color = "White";    private boolean filled;    private java.util.Date dateCreated;        protected GeometricObject(){        dateCreated = new java.util.Date();    }    protected GeometricObject(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 getFilled(){        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 abstract double getArea();    public abstract double getPerimeter();}class Octagon extends GeometricObject implements Cloneable,Comparable<Octagon>{    private double r;        public Octagon(){}    public Octagon(double r){        this.r=r;    }    public Octagon(double r,String color,boolean filled){        this.r=r;        setColor(color);        setFilled(filled);    }    public double getR(){        return r;    }    public void setRadius(double r){        this.r=r;    }    public double getArea(){        return (2+2*Math.sqrt(2))*r*r;    }    public double getPerimeter(){        return 8*r;    }    @Override    //覆盖clone()方法    public Object clone(){          try{            Octagon octagonClone=(Octagon)super.clone();            return octagonClone;        }        catch(CloneNotSupportedException ex){            return null;        }      }    @Override    //Implement the compareTo method defined in Comparable    public int compareTo(Octagon o){        if(getArea()>o.getArea())            return 1;        else if(getArea()<o.getArea())            return -1;        else            return 0;    } }public class TestOctagon {    public static void main(String[] args) {        Octagon o1=new Octagon(1,"white",true);        Octagon o2=new Octagon(2,"black",false);        Octagon o3=(Octagon)o1.clone();        System.out.println("o1:");        System.out.println(o1.toString());        System.out.println("o1周长"+o1.getPerimeter());        System.out.println("o1边长"+o1.getR());        System.out.println("o1面积"+o1.getArea());        System.out.println();        System.out.println("o2:");        System.out.println(o2.toString());        System.out.println();        System.out.println("o3:");        System.out.println(o3.toString());        System.out.println();        System.out.println("o1与o2比较:");        System.out.println(o1.compareTo(o2));        System.out.println();        System.out.println("o3由o1拷贝而来:");        System.out.println("o3周长"+o3.getPerimeter());        System.out.println("o3边长"+o3.getR());        System.out.println("o3面积"+o3.getArea());        System.out.println();        System.out.println("改变o3的颜色,将o3与o1颜色对比");        o3.setColor("Red");        System.out.println("o3的颜色"+o3.getColor());        System.out.println("o1的颜色"+o1.getColor());    }} 


0 0
原创粉丝点击