Java——Shape类2

Description

定义一个形状类Shape,提供计算周长getPerimeter()和面积getArea()的函数
定义一个子类正方形类Square继承自Shape类,拥有边长属性,提供构造函数,能够计算周长getPerimeter()和面积getArea()
定义一个子类长方形类Rectangle继承自Square类,拥有长、宽属性,提供构造函数,能够计算周长getPerimeter()和面积getArea()
定义一个子类圆形类Circle继承自Shape,拥有半径属性,提供构造函数,能够计算周长getPerimeter()和面积getArea()

在main函数中,分别构造三个Shape类的变量,分别指向一个Square、Rectangle、Circle对象,并输出他们的周长、面积.

Input

正方形类的边长
长方形类的长宽
圆类的半径

Output

正方形的周长、面积
长方形的周长、面积
圆形的周长、面积

Sample Input

1
1 2
2

Sample Output

4.00 1.00
6.00 2.00
12.57 12.57
import java.util.Scanner;

public class Main{

    public static void main(String[] argc)

    {

        Scanner scan = new Scanner(System.in);

        double len = scan.nextDouble();

        Square sq = new Square(len);

        System.out.println(String.format("%.2f", sq.getPerimeter()) + " "+ String.format("%.2f", sq.getArea()));

        

        double reLen = scan.nextDouble();

        double reWid = scan.nextDouble();

        

        Rectangle re = new Rectangle(reLen,reWid);

        System.out.println(String.format("%.2f", re.getPerimeter()) + " "+ String.format("%.2f", re.getArea()));

        

        double ra = scan.nextDouble();

        Circle c = new Circle(ra);

        System.out.println(String.format("%.2f", c.getPerimeter()) + " "+ String.format("%.2f", c.getArea()));

        

        

    }

    

    

}

abstract class Shape{

    public abstract double getPerimeter();

    public abstract double getArea();

}

class Square extends Shape{

    private double length;

    

    public Square(double length)

    {

        this.length = length;

    }

    public double getPerimeter()

    {

        return 4*length;

    }

    public double getArea()

    {

        return length*length;

    }

}

class Rectangle extends Square{

    private double length;

    private double width;

    

    public Rectangle(double length,double width)

    {

        super(length);

        this.length = length;

        this.width = width;

    }

    

    public double getPerimeter()

    {

        return (length + width)*2;

    }

    public double getArea()

    {

        return length*width;

    }

}

 class Circle extends Shape{

    private double radius;

    

    public Circle(double radius)

    {

        this.radius = radius;

    }

    public double getPerimeter()

    {

        return 3.1415926*2*radius;

    }

    public double getArea()

    {

        return 3.1415926*radius*radius;

    }

}

猜你喜欢

转载自blog.csdn.net/Yolanda_Salvatore/article/details/83240848