JAVA——编写一个计算各种形状的面积和周长的程序

1.要求:

父类Shape2D为一个抽象类,其中包含计算周长和计算面积两个抽象方法。其他形状圆(Circle),三角形(Triangle)和长方形(Rectangle)类均继承自Shape2D类。而正方形Square类继承自Rectangle类。编写计算这些形状的面积和周长的各类的程序。

abstract public double getArea();//计算面积的方法 abstract public double getL();//计算周长的方法 如果三角形的边不满足要求,这两方法都返回-1 PI=3.14159 各类的构造函数如下: public Circle(double r);r为圆的半径 public Triangle(double a,double b,double c);a,b,c为三边的长 public Rectangle(double a,double b);a,b为长宽 public Square(double a);a为边长

2.父类,Shape2D类里面就是两个抽象方法即可

abstract class Shaped2D {
    abstract public double getArea();
    abstract public double getL();
}

3.circle类,里面就用父类的两个方法来算圆的周长和面积

public class Circle extends Shaped2D{
    private double r;
    public Circle(double r) {
        this.r=r;
    }
    public double getArea() {
        return r*Math.PI*r;
    }
    public double getL() {
        return Math.PI*r*2;
    }
}

4.triangle类也是使用父类的两个方法来计算三角形的周长

public class Triangle extends Shaped2D{
    private double a,b,c;
    public Triangle(double a,double b,double c) {
        this.a=a;
        this.b=b;
        this.c=c;
    }
    public double getArea() {
        if(a+b>c&&a+c>b&&b+c>a) {
            double p=(a+b+c)/2.0;
            return Math.sqrt(p*(p-a)*(p-b)*(p-c));
        }
        else
            return -1;
    }
    
    public double getL() {
        if(a+b>c&&a+c>b&&b+c>a) {
            return a+b+c;
        }
        else
            return -1;
    }
    
}

4.Rectangle类也是使用父类的两个方法来计算长方形的周长和面积

public class Rectangle extends Shaped2D{
    private double a,b;
    public Rectangle(double a,double b) {
        this.a=a;
        this.b=b;
    }
    public double getArea() {
        return a*b;
    }
    public double getL() {
        return 2*a+2*b;
    }

}

5.Rectangle是Square的父类,直接引用父类的方法即可

public class Square extends Rectangle{
    
    public Square(double a) {
        super(a, a);
    }
}

6.主函数代码

public class main {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Circle c1=new Circle(3);
        System.out.println("周长为:"+c1.getL()+" 面积为:"+c1.getArea());
        Triangle c2=new Triangle(1,3,3);
        System.out.println("周长为:"+c2.getL()+" 面积为:"+c2.getArea());
        Rectangle c3=new Rectangle(3,5);
        System.out.println("周长为:"+c3.getL()+" 面积为:"+c3.getArea());
        Square c4=new Square(4);
        System.out.println("周长为:"+c4.getL()+" 面积为:"+c4.getArea());
    }
}

7.试验结果

posted @ 2020-10-25 21:47  ....陈陈陈陈  阅读(3798)  评论(0)    收藏  举报