定义一个抽象类Shape,包含求面积的抽象方法Area(),利用继承产生子类三角形类Trangle类,圆Circle类,矩形Rectangle类。并分别实现计算面积的方法计算相应图形的面积。对于Trangle类要求能够实现修改三边,判断三边是
时间: 2024-11-05 09:27:55 浏览: 25
定义一个抽象类`Shape`是为了创建一组共享属性和行为的基类,其中包含了诸如求面积这样的抽象方法`Area()`。这种方式使得我们能够构建出一系列具有共同特性的派生类,如三角形、圆形和矩形。每个子类需要实现这个抽象方法,以提供特定形状的具体面积计算。
比如,我们可以这样设计:
```java
abstract class Shape {
abstract double getArea(); // 抽象方法,用于计算面积
// 其他通用方法或属性...
}
class Triangle extends Shape {
private double sideA;
private double sideB;
private double sideC;
public Triangle(double a, double b, double c) {
if (a + b > c && a + c > b && b + c > a) {
this.sideA = a;
this.sideB = b;
this.sideC = c;
} else {
throw new IllegalArgumentException("Invalid triangle sides");
}
}
@Override
double getArea() {
double s = (sideA + sideB + sideC) / 2;
return Math.sqrt(s * (s - sideA) * (s - sideB) * (s - sideC)); // Heron's formula
}
// 方法重写,用于修改三边...
public void setSide(double newSide, int index) {
switch (index) {
case 0: sideA = newSide; break;
case 1: sideB = newSide; break;
case 2: sideC = newSide; break;
default: throw new IndexOutOfBoundsException();
}
}
// 判断三边是否构成有效三角形的方法...
boolean isValidTriangle() {
// ...这里可以检查三边是否满足三角形条件...
}
}
// 类Circle和Rectangle同理,分别实现getArea方法
class Circle extends Shape {
private double radius;
public Circle(double r) { radius = r; }
@Override
double getArea() {
return Math.PI * radius * radius;
}
}
class Rectangle extends Shape {
private double width;
private double height;
public Rectangle(double w, double h) { width = w; height = h; }
@Override
double getArea() {
return width * height;
}
}
```
阅读全文