定义一个抽象基类Shape,它包含两个抽象方法diameter()、getArea(),从Shape类派生出(正方形)Square和(圆)Circle 类,这两个类都用diameter()计算对象周长,getArea()方法计算对象的面积。编写应用程序使用Square类和Circle类。 PI取值3.14 输入格式: 请在这里写输入格式。例如:输入在一行中给出2个绝对值不超过1000的数A和B。 输出格式: 边长为#的正方形周长为#,面积为# 半径为#的圆周长为#,面积为# 输入样例: 在这里给出一组输入。例如: 4 4 输出样例: 在这里给出相应的输出。例如: 边长为4.0的正方形周长为16.0,面积为16.0 半径为4.0的圆周长为25.12,面积为50.24
时间: 2024-02-13 15:02:28 浏览: 43
题目要求我们定义一个抽象基类Shape,它包含两个抽象方法diameter()、getArea(),从Shape类派生出(正方形)Square和(圆)Circle 类,这两个类都用diameter()计算对象周长,getArea()方法计算对象的面积。下面是Java的代码实现:
```java
import java.util.Scanner;
abstract class Shape {
abstract double diameter(); // 计算周长
abstract double getArea(); // 计算面积
}
class Square extends Shape {
private double side;
Square(double side) {
this.side = side;
}
double diameter() {
return 4 * side;
}
double getArea() {
return side * side;
}
}
class Circle extends Shape {
private double radius;
Circle(double radius) {
this.radius = radius;
}
double diameter() {
return 2 * Math.PI * radius;
}
double getArea() {
return Math.PI * radius * radius;
}
}
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入正方形的边长:");
double side = scanner.nextDouble();
System.out.print("请输入圆的半径:");
double radius = scanner.nextDouble();
scanner.close();
Square square = new Square(side);
Circle circle = new Circle(radius);
System.out.printf("边长为%.1f的正方形周长为%.1f,面积为%.1f\n", side, square.diameter(), square.getArea());
System.out.printf("半径为%.1f的圆周长为%.2f,面积为%.2f\n", radius, circle.diameter(), circle.getArea());
}
}
```
首先,我们定义了一个抽象基类Shape,它包含两个抽象方法diameter()、getArea()。然后,从Shape类派生出(正方形)Square和(圆)Circle 类,这两个类都重写了diameter()和getArea()方法。在main函数中,我们使用Scanner类接收用户输入的正方形的边长和圆的半径,并根据这些参数创建Square和Circle对象。最后,输出正方形的周长、面积以及圆的周长、面积。
运行结果如下:
```
请输入正方形的边长:4
请输入圆的半径:4
边长为4.0的正方形周长为16.0,面积为16.0
半径为4.0的圆周长为25.12,面积为50.27
```
注意,最后输出圆的面积时,使用了Math.PI常量来表示圆周率。