129 - Shape类
Time Limit: 1000 Memory Limit: 65535
Submit: 441 Solved: 259
Description
定义一个形状类Shape,提供计算周长getPerimeter()和面积getArea()的函数 定义一个子类正方形类Square继承自Shape类,拥有边长属性,提供构造函数,能够计算周长getPerimeter()和面积getArea() 定义一个子类长方形类Rectangle继承自Square类,拥有长、宽属性,提供构造函数,能够计算周长getPerimeter()和面积getArea() 定义一个子类圆形类Circle继承自Shape,拥有半径属性,提供构造函数,能够计算周长getPerimeter()和面积getArea() 在main函数中,分别构造三个子类的对象,并输出他们的周长、面积.
Input
正方形类的边长 长方形类的长宽 圆类的半径
Output
正方形的周长、面积 长方形的周长、面积 圆形的周长、面积
Sample Input
1 1 2 2
Sample Output
4.00 1.00 6.00 2.00 12.57 12.57
HINT
用System.out.printf("%.2f",d)进行格式化输出
Pre Append Code
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
double length = scan.nextDouble();
Square s = new Square(length);
System.out.printf("%.2f ",s.getPerimeter());
System.out.printf("%.2f\n",s.getArea());
length = scan.nextDouble();
double wide = scan.nextDouble();
Rectangle r = new Rectangle(length,wide);
System.out.printf("%.2f ",r.getPerimeter());
System.out.printf("%.2f\n",r.getArea());
double radius = scan.nextDouble();
Circle c = new Circle(radius);
System.out.printf("%.2f ",c.getPerimeter());
System.out.printf("%.2f\n",c.getArea());
scan.close();
}
}
abstract class Shape
{
public abstract double getPerimeter();
public abstract double getArea();
}
class Square extends Shape
{
double length;
public Square(double length)
{
this.length = length;
}
@Override
public double getPerimeter()
{
return 4 * length;
}
@Override
public double getArea()
{
return length * length;
}
}
class Rectangle extends Square
{
double width;
public Rectangle(double length,double width)
{
super(length);
this.width = width;
}
@Override
public double getArea() {
return length*width;
}
@Override
public double getPerimeter() {
return 2*(length+width);
}
}
class Circle extends Shape
{
double r;
public Circle(double r)
{
this.r = r;
}
@Override
public double getArea()
{
return Math.PI * r * r;
}
@Override
public double getPerimeter()
{
return 2 * Math.PI * r;
}
}