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;
}
}