基础知识要求:
抽象类,继承,printf占位符打印
题目:
定义一个形状类Shape,提供计算周长getPerimeter()和面积getArea()的函数
定义一个子类正方形类Square继承自Shape类,拥有边长属性,提供构造函数,能够计算周长getPerimeter()和面积getArea()
定义一个子类长方形类Rectangle继承自Square类,拥有长、宽属性,提供构造函数,能够计算周长getPerimeter()和面积getArea()
定义一个子类圆形类Circle继承自Shape,拥有半径属性,提供构造函数,能够计算周长getPerimeter()和面积getArea()
在main函数中,分别构造三个Shape类的变量,分别指向一个Square、Rectangle、Circle对象,并输出他们的周长、面积.
输入格式:
正方形类的边长
长方形类的长宽
圆类的半径
输出格式:
正方形的周长、面积
长方形的周长、面积
圆形的周长、面积
输入样例:
在这里给出一组输入。例如:
1
1 2
2
在这里给出相应的输出。例如:
4.00 1.00
6.00 2.00
12.57 12.57
代码示例:
import java.util.Scanner;
abstract class Shape {
public abstract double getPerimeter();
public abstract double getArea();
}
class Square extends Shape {
private double side;
public Square(double side) {
this.side = side;
}
@Override
public double getPerimeter() {
return 4 * side;
}
@Override
public double getArea() {
return side * side;
}
}
class Rectangle extends Shape {
private double length;
private double width;
public Rectangle(double length, double width) {
this.length = length;
this.width = width;
}
@Override
public double getPerimeter() {
return 2 * (length + width);
}
@Override
public double getArea() {
return length * width;
}
}
class Circle extends Shape {
private double radius;
private static final double PI = 3.141592653589793;
public Circle(double radius) {
this.radius = radius;
}
@Override
public double getPerimeter() {
return 2 * PI * radius;
}
@Override
public double getArea() {
return PI * radius * radius;
}
}
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 输入正方形的边长
double side = scanner.nextDouble();
Square square = new Square(side);
System.out.printf("%.2f %.2f%n", square.getPerimeter(), square.getArea());
// 输入长方形的长和宽
double length = scanner.nextDouble();
double width = scanner.nextDouble();
Rectangle rectangle = new Rectangle(length, width);
System.out.printf("%.2f %.2f%n", rectangle.getPerimeter(), rectangle.getArea());
// 输入圆的半径
double radius = scanner.nextDouble();
Circle circle = new Circle(radius);
System.out.printf("%.2f %.2f%n", circle.getPerimeter(), circle.getArea());
scanner.close();
}
}
在这个示例中,我们定义了Shape类作为基类,其中包含了两个抽象方法getPerimeter()
和getArea()
。然后,我们为Square、Rectangle和Circle分别创建了子类,并在每个子类中实现了这两个方法。
在main
方法中,我们使用Scanner
类来从用户那里获取输入,并创建相应的对象。然后,我们调用每个对象的getPerimeter()
和getArea()
方法来计算周长和面积,并将结果打印到控制台上。
请注意,在实际编程中,通常会使用更精确的π值,这里为了简单起见,我们使用了π的近似值。在需要更高精度的计算中,您可以使用Math.PI
或者一个更精确的π值。