在circle兴中,实现calArea0方法。 在Rectangle兴中,增加一个数据成员 (double型),实现calArea0方法。 镇写制试兴:定义一个Shape兴引1用shape,分别指向一个Circle关、Rectangle兴对条,利用多态,计買各平面图形的面积并输出。(结果保留2位小数) 要求: 1数掘成员全部为私有成员; 2数招从健盘输入,调用带参构造方法创建子类对念。 提示:使用Math类的PI。输入形式两行:分别是为圆的半径、长方形的长和亮
时间: 2024-03-17 13:44:45 浏览: 55
下面是实现上述要求的代码:
```java
import java.text.DecimalFormat;
import java.util.Scanner;
abstract class Shape {
public abstract double calArea0();
}
class Circle extends Shape {
private double radius;
public Circle(double radius) {
this.radius = radius;
}
public double calArea0() {
return Math.PI * radius * radius;
}
}
class Rectangle extends Shape {
private double length;
private double width;
public Rectangle(double length, double width) {
this.length = length;
this.width = width;
}
public double calArea0() {
return length * width;
}
}
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
double radius = scanner.nextDouble();
double length = scanner.nextDouble();
double width = scanner.nextDouble();
scanner.close();
Circle circle = new Circle(radius);
Rectangle rectangle = new Rectangle(length, width);
Shape shape1 = circle;
Shape shape2 = rectangle;
double area1 = shape1.calArea0();
double area2 = shape2.calArea0();
DecimalFormat df = new DecimalFormat("#.##");
System.out.println(df.format(area1));
System.out.println(df.format(area2));
}
}
```
在这个程序中,我们首先定义了一个 `Shape` 抽象类,其中包含了一个抽象方法 `calArea0()`,用于计算面积。然后我们定义了两个子类 `Circle` 和 `Rectangle`,分别表示圆和长方形。这两个子类分别实现了 `calArea0()` 方法,用于计算圆和长方形的面积。
在 `Main` 类中,我们使用 `Scanner` 类从控制台读入圆的半径、长方形的长和宽。然后我们分别创建一个 `Circle` 和 `Rectangle` 对象,并将它们赋值给 `Shape` 类型的变量 `shape1` 和 `shape2`。由于 `Circle` 和 `Rectangle` 都是 `Shape` 的子类,因此可以使用多态的方式进行赋值。
最后,我们分别调用 `shape1.calArea0()` 和 `shape2.calArea0()` 方法,计算圆和长方形的面积,并使用 `DecimalFormat` 类将结果保留两位小数后输出。
阅读全文