2.2 设计实现两个图形类:长方形Rect,圆形Circle,实现以下功能: (1)显示菜单,由用户选择要画的形状,并输入相关数据(2)在窗口中画该形状(3)两个类均继承自Object类,都有各
时间: 2024-11-24 12:41:43 浏览: 19
在设计实现两个图形类(长方形Rect和圆形Circle)时,可以按照以下步骤操作:
1. **定义基础类**:
创建一个名为`Shape`的基础抽象类,它继承自`java.lang.Object`。这个基础类将包含通用的方法如`displayMenu()`和`onDraw(Graphics g)`,这两个方法分别用于显示菜单和在窗口上绘制图形。
```java
abstract class Shape extends Object {
public abstract void displayMenu();
public abstract void onDraw(Graphics g);
}
```
2. **创建具体图形类**:
- `Rectangle`类:继承自`Shape`,添加属性(例如长度、宽度)和方法(如计算面积)。
```java
class Rect extends Shape {
private int length;
private int width;
public void displayMenu() {
// 显示矩形菜单并获取用户输入
System.out.println("请选择绘制长方形,输入长和宽:");
}
public void onDraw(Graphics g) {
// 绘制长方形的具体代码
g.drawRect(0, 0, length, width);
}
}
```
- `Circle`类:同样继承自`Shape`,添加属性(半径)和方法(如计算面积)。
```java
class Circle extends Shape {
private int radius;
public void displayMenu() {
// 显示圆形菜单并获取用户输入
System.out.println("请选择绘制圆形,输入半径:");
}
public void onDraw(Graphics g) {
// 绘制圆形的具体代码
g.drawOval(0, 0, radius * 2, radius * 2);
}
}
```
3. **主程序**:
在主函数中实例化所需的图形对象,调用各自的`displayMenu()`和`onDraw(Graphics g)`方法。
```java
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Shape shape;
System.out.println("请输入要绘制的图形(Rect/Circle):");
String choice = scanner.nextLine();
if (choice.equalsIgnoreCase("Rect")) {
shape = new Rect();
} else if (choice.equalsIgnoreCase("Circle")) {
shape = new Circle();
} else {
System.out.println("无效的选择");
return;
}
shape.displayMenu();
// 获取用户输入并设置相应的属性
// ...
JFrame frame = new JFrame();
frame.add(shape); // 将图形对象添加到窗口
frame.setVisible(true);
}
```
阅读全文