定义Shape表示一般二维图形。Shape具有抽象方法area和perimeter(分别计算形状的面积和周长),试定义一些二维形状类(如矩形、三角形、圆形等),这些类均为Shape类的子类,分别计算定义的二维形状对应的面积和周长。
时间: 2024-12-22 16:28:36 浏览: 14
首先,我们定义一个名为`Shape`的抽象类,它包含两个抽象方法`area`和`perimeter`,这两个方法需要在每个子类中具体实现:
```java
abstract class Shape {
// 抽象方法,需要子类提供具体的实现
abstract double area();
abstract double perimeter();
}
```
然后我们可以创建几个`Shape`的子类,比如`Rectangle`, `Triangle`, 和 `Circle`:
1. **Rectangle**类:
```java
class Rectangle extends Shape {
private double width;
private double height;
public Rectangle(double width, double height) {
this.width = width;
this.height = height;
}
@Override
double area() {
return width * height;
}
@Override
double perimeter() {
return 2 * (width + height);
}
}
```
2. **Triangle**类:
```java
class Triangle extends Shape {
private double base;
private double height;
public Triangle(double base, double height) {
this.base = base;
this.height = height;
}
// 假设底边和高都是直角三角形的尺寸
@Override
double area() {
return 0.5 * base * height;
}
@Override
double perimeter() {
// 基本假设是等腰三角形,仅需计算两边之和
if (base == height) {
return base + base;
} else {
throw new IllegalArgumentException("Unequal sides for a triangle");
}
}
}
```
3. **Circle**类:
```java
class Circle extends Shape {
private double radius;
public Circle(double radius) {
this.radius = radius;
}
@Override
double area() {
return Math.PI * radius * radius;
}
@Override
double perimeter() {
return 2 * Math.PI * radius;
}
}
```
现在,你可以根据具体需求实例化这些类,并通过它们的对象调用`area()`和`perimeter()`方法来获取相应的面积和周长值。
阅读全文