提示错误是:创建泛型数据

5.设计一个抽象的形状类Shape,方法:求周长和求面积。
shape类的子类:Rect(矩形),Circle(圆形)。
Rect类的子类:Square(正方形)。
不同的子类会有不同的计算周长和面积的方法。
(总共五个文件)
这个是题目

public class Shape {
double sum=0;//周长
double area=1;//面积

public double getGirth() {
return 0.0;
}
public double getArea() {
return 0.0;
}

public static void main(String[] args) {
// TODO Auto-generated method stub
Rect r=new Rect(3.0,4.0);
Circle c=new Circle(3.0);
Square s=new Square(4.0);
Shape[] shapes=new Shape[3];
shapes[0]=r;
shapes[1]=c;
shapes[2]=s;
for(int i=0;i<shapes.length;i++) {
System.out.println("周长为:"+shapes[i].getGirth()+" "+"面积为:"+shapes[i].getArea());
}
}
}

package homework;

public class Circle extends Shape{
final double a=3.14159265;
double radius;

public Circle(double radius) {
this.radius=radius;
}
public double getRadius() {
return radius;
}
public void setRadius(double radius) {
this.radius = radius;
}
public double getGirth() {
sum=2aradius;
return sum;
}
public double getArea() {
area=aradiusradius;
return area;
}
public static void main(String[] args) {
// TODO Auto-generated method stub

}

}

package homework;

public class Rect extends Shape{
double length;//长
double wide;//宽
public Rect(double length,double wide) {
this.length=length;
this.wide=wide;
}
public Rect() {}

public double getLength() {
return length;
}

public void setLength(double length) {
this.length = length;
}

public double getWide() {
return wide;
}

public void setWide(double wide) {
this.wide = wide;
}

public double getGirth() {
sum=2*(this.length+this.wide);
return sum;
}
public double getArea() {
area=this.length*this.wide;
return area;
}
public static void main(String[] args) {
// TODO Auto-generated method stub

}

}

package homework;

public class Square extends Rect{
public Square(double length) {
this.length=length;
}
public double getGirth() {
sum=4length;
return sum;
}
public double getArea() {
area=length
length;
return area;
}
public static void main(String[] args) {
// TODO Auto-generated method stub

}

}

抽象的形状类Shape

/**
 * 5.设计一个抽象的形状类Shape,方法:求周长和求面积。
 * shape类的子类:Rect(矩形),Circle(圆形)。
 * Rect类的子类:Square(正方形)。
 * 不同的子类会有不同的计算周长和面积的方法。
 */
public abstract class Shape {
    /**
     * 求面试
     *
     * @return area
     */
   public abstract double getArea();

    /**
     * 求周长
     *
     * @return Perimeter
     */
    public   abstract double getPerimeter();
}

矩形

/**
 * 矩形
 */
public class Rect extends Shape {
    /**
     * 宽
     */
    private double width;

    /**
     * 长度
     */
    private double length;

    public Rect(double width) {
        this.width = width;
    }

    public Rect(double width, double length) {
        this.width = width;
        this.length = length;
    }

    public double getWidth() {
        return width;
    }

    public void setWidth(double width) {
        this.width = width;
    }

    public double getLength() {
        return length;
    }

    public void setLength(double length) {
        this.length = length;
    }

    @Override
    public double getArea() {
        return length * width;
    }

    @Override
    public double getPerimeter() {
        return 2 * (length + width);
    }
}

圆形


/**
 * 圆形
 */
public class Circle extends Shape {
    /**
     * 圆周率
     */
    private final double PI = 3.14;

    /**
     * 半径
     */
    private double r;

    public Circle(double r) {
        this.r = r;
    }

    public double getPI() {
        return PI;
    }

    public double getR() {
        return r;
    }

    public void setR(double r) {
        this.r = r;
    }

    @Override
    public double getArea() {
        return PI * r * r;
    }

    @Override
    public double getPerimeter() {
        return 2 * PI * r;
    }
}

正方形

/**
 * 正方形
 */
public class Square extends Rect {
    public Square(double width) {
        super(width);
    }

    @Override
    public double getArea() {
        return getWidth() * getWidth();
    }

    @Override
    public double getPerimeter() {
        return 4 * getWidth();
    }
}

测试类

public class TestMain {
    public static void main(String[] args) {
        System.out.println("==============圆==============");
        Circle circle = new Circle(3.0);
        double circleArea = circle.getArea();
        double circlePerimeter = circle.getPerimeter();
        System.out.println("圆半径:" + circle.getR());
        System.out.println("圆面积:" + circleArea + ", 圆周长:" + circlePerimeter);

        System.out.println("==============矩形==============");
        Rect rect = new Rect(3, 4);
        double rectArea = rect.getArea();
        double rectPerimeter = rect.getPerimeter();
        System.out.println("矩形长度:" + rect.getLength() + ", 矩形宽度:" + rect.getWidth());
        System.out.println("矩形面积:" + rectArea + ", 矩形周长:" + rectPerimeter);

        System.out.println("==============正方形==============");
        Rect square = new Square(3);
        double squareArea = square.getArea();
        double squarePerimeter = square.getPerimeter();
        System.out.println("正方形边长:" + square.getWidth());
        System.out.println("正方形面积:" + squareArea + ", 正方形周长:" + squarePerimeter);
    }
}

测试结果:

img