自主拓展部分:对三角形进行抽象、封装定义Triangle类。要求: ①三个 double类型成员变量表示三边、 ②一个返回三角形面积的方法、 ③一个返回三角形周长的方法、 ④一个无参构造方法可以创建三
时间: 2024-11-20 17:55:20 浏览: 28
在Java中,你可以设计一个名为`Triangle`的抽象类来满足这些需求。首先,我们需要声明三个`double`类型的抽象成员变量,通常代表三角形的三条边长。然后,我们会定义两个方法`getArea()`计算面积和`getPerimeter()`计算周长,这些都是基于边长的属性。由于Java不支持纯抽象类的构造函数,所以我们将提供一个默认的无参数构造方法。
```java
public abstract class Triangle {
// 三角形的抽象边长
protected double sideA;
protected double sideB;
protected double sideC;
// 无参数构造方法
public Triangle() {
this.sideA = 0.0;
this.sideB = 0.0;
this.sideC = 0.0; // 这里假设默认值为0,实际应用需要设置有效值
}
// 抽象方法:计算面积
public abstract double getArea();
// 计算周长
public double getPerimeter() {
return sideA + sideB + sideC;
}
}
```
对于具体的三角形类型(比如等边三角形、直角三角形等),你需要从`Triangle`派生出子类并重写`getArea()`方法,提供实际的计算逻辑。例如:
```java
// 等边三角形子类
public class EquilateralTriangle extends Triangle {
public EquilateralTriangle(double side) {
sideA = side;
sideB = side;
sideC = side;
}
@Override
public double getArea() {
double s = (sideA + sideB + sideC) / 2;
return Math.sqrt(s * (s - sideA) * (s - sideB) * (s - sideC));
}
}
// 直角三角形子类
public class RightangledTriangle extends Triangle {
public RightangledTriangle(double a, double b) {
sideA = a;
sideB = b;
sideC = Math.sqrt(a * a + b * b);
}
@Override
public double getArea() {
return 0.5 * sideA * sideB;
}
}
```
阅读全文