定义抽象类Shape, 圆形Circle、Rectangle为子类。 Shape类有一个数据成员 (double型),定义带参构造方法、抽象方法CalAreaOC返回值类型:doubie) 在Cirdle类中,实现calArea0方法。 在Rectangle类中,增加一个数据成员 (double型),实现calArea0方法。 编亏测试类:定义一个Shape类引1用shape,分别指向一个Circle类、Rectangle类对象,利用多态,计算 要求: 1数据成员全部为私有成员; 2.数据从键盘输入,调用带参构造方法创建子类对象。 提示:使用Math类的PI
时间: 2024-03-17 20:45:45 浏览: 115
好的,让我来解答你的问题。
下面是题目要求的代码实现:
```java
import java.util.Scanner;
// 抽象类 Shape
abstract class Shape {
protected double data;
public Shape(double data) {
this.data = data;
}
public abstract double calArea0();
}
// 圆形类 Circle
class Circle extends Shape {
public Circle(double data) {
super(data);
}
@Override
public double calArea0() {
return Math.PI * data * data;
}
}
// 矩形类 Rectangle
class Rectangle extends Shape {
private double height;
public Rectangle(double data, double height) {
super(data);
this.height = height;
}
@Override
public double calArea0() {
return data * height;
}
}
// 测试类 Test
public class Test {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入圆的半径:");
double radius = scanner.nextDouble();
Shape circle = new Circle(radius);
System.out.print("请输入矩形的长:");
double length = scanner.nextDouble();
System.out.print("请输入矩形的宽:");
double width = scanner.nextDouble();
Shape rectangle = new Rectangle(length, width);
System.out.println("圆的面积:" + circle.calArea0());
System.out.println("矩形的面积:" + rectangle.calArea0());
}
}
```
这个程序定义了一个抽象类 `Shape`,它有一个数据成员 `data`,以及一个抽象方法 `calArea0`,它的两个子类 `Circle` 和 `Rectangle` 分别实现了这个方法。在测试类中,利用多态,分别创建 `Circle` 和 `Rectangle` 的对象,并调用它们的 `calArea0` 方法计算面积。
阅读全文