Shape的代码重设计 1、子类匿名类: Shape类包含String info成员变量并给出默认值,测试类的main 方法中利用匿名类继承Shape,给出printArea方法同时打印info 以及
时间: 2024-12-25 20:28:35 浏览: 2
首先,让我们理解您所描述的情况。在这个例子中,我们有一个名为`Shape`的基础类,它有一个`String info`属性,并提供了一个默认值。然后,你想要通过子类匿名类的方式重写`Shape`类的行为,并添加一个新的`printArea()`方法,同时在`main`方法中创建并使用这个匿名类。
下面是一个简单的Java代码示例:
```java
// 原始Shape类
class Shape {
private String info = "基础形状";
// 默认的printInfo方法
public void printInfo() {
System.out.println("Info: " + info);
}
// 定义printArea方法,可以在这里添加各种形状的面积计算逻辑
abstract double printArea();
}
public class Main {
public static void main(String[] args) {
// 使用匿名子类实现Circle并覆盖printArea方法
Shape circle = new Shape() {
@Override
double printArea() {
return Math.PI * radius * radius; // 假设radius是已知的
}
// 如果需要额外的打印信息
void customPrint() {
printInfo(); // 调用父类的printInfo()
System.out.println("Circle area: " + printArea());
}
};
// 利用匿名类实例
circle.customPrint(); // 输出基础形状信息和圆形的面积
}
}
```
在这个重构中,`Main`类的`main`方法里创建了一个匿名的`Shape`子类实例,该子类实现了`printArea()`方法,用于计算特定形状(这里假设是圆)的面积。此外,还添加了自定义的`customPrint()`方法,用于打印基础信息和计算结果。
如果你有更多的关于代码重设计的问题,或者想要了解其他类型的匿名类或设计模式,请随时提问:
阅读全文