实验1:设计一个Shape类,该类有一个属性name,并有一个方法 area(),该方法在子类中需要被重写。然后设计两个子类Circle和 Rectangle,分别计算圆形和矩形的面积。
时间: 2024-12-23 10:18:41 浏览: 3
实验1的设计可以按照面向对象编程的原则来进行:
首先,创建一个名为`Shape`的抽象类,包含一个共同的属性`name`和一个抽象方法`area()`,表示所有形状的基本特征。
```java
public abstract class Shape {
private String name;
public Shape(String name) {
this.name = name;
}
// 获取名字的getter方法
public String getName() {
return name;
}
// 抽象方法,每个形状的面积计算需由子类提供
public abstract double getArea();
}
```
接着,我们定义两个具体的子类`Circle`和`Rectangle`,这两个类都继承自`Shape`,并实现了`getArea()`方法以计算各自的面积。
```java
class Circle extends Shape {
private final double radius;
public Circle(String name, double radius) {
super(name);
this.radius = radius;
}
@Override
public double getArea() {
return Math.PI * radius * radius;
}
}
class Rectangle extends Shape {
private double width;
private double height;
public Rectangle(String name, double width, double height) {
super(name);
this.width = width;
this.height = height;
}
@Override
public double getArea() {
return width * height;
}
}
```
在这个实验中,你可以创建`Circle`和`Rectangle`的对象,通过它们的`getName()`方法获取名称,然后调用`getArea()`方法获取各自的面积值。由于多态性,无论传入的是`Circle`还是`Rectangle`对象,`getArea()`方法都会返回相应的结果,体现了代码的灵活性和复用性。
阅读全文