用抽象类的方法定义基本几何图形的基类(Shape),然后在 Shape类中定义抽象方法面积的方法getArea() 及边长getLength()的抽象方法 用定义接口类的方法定义基本几何图形的基类(ShapeI),然后在 ShapeI类中定义抽象方法面积的方法getArea() 及边长getLength()的抽象方法 然后定义Shape的派生类Circle(圆),Square(正方形)和Triangle(三角形)。要求通过方法覆盖来计算各种图形的面积和周长。 同样的用ShapeI接口实现圆正方形和三角形的类的计算各种图形的面积和周长. (提示:求三角形的面积用海伦公式:S=√(L*(L-a)*(L-b)*(L-c)) 其中a,b,c是三角形的边长),L=(a+b+c)/2,即周长的一半)。
时间: 2024-02-22 19:58:04 浏览: 54
设计一个抽象类图形类,在该类中包含有至少两个抽象方法求周长和求面积,分别定义圆形类、长方形类、正方形类、三角形类来继承图形类,并实现上述两个方法
5星 · 资源好评率100%
好的,让我来解答你的问题。
首先,我们可以用抽象类的方法定义基本几何图形的基类Shape,如下所示:
```java
// 定义基类Shape
public abstract class Shape {
// 定义抽象方法,获取面积
public abstract double getArea();
// 定义抽象方法,获取边长
public abstract double getLength();
}
```
在Shape类中,我们定义了两个抽象方法,分别是获取面积和获取边长的方法,这两个方法在具体的子类中必须被实现。
接着,我们用定义接口类的方法定义基本几何图形的基类ShapeI,如下所示:
```java
// 定义接口类ShapeI
public interface ShapeI {
// 定义抽象方法,获取面积
public abstract double getArea();
// 定义抽象方法,获取边长
public abstract double getLength();
}
```
在ShapeI接口类中,同样定义了获取面积和获取边长的方法,这两个方法在实现接口的类中必须被实现。
接下来,我们定义Shape的派生类Circle(圆),Square(正方形)和Triangle(三角形),并通过方法覆盖来计算各种图形的面积和周长,具体代码如下:
```java
// 定义圆类
public class Circle extends Shape {
double radius; // 半径
public Circle(double radius) {
this.radius = radius;
}
// 获取圆的面积
public double getArea() {
return Math.PI * Math.pow(radius, 2);
}
// 获取圆的周长
public double getLength() {
return 2 * Math.PI * radius;
}
}
// 定义正方形类
public class Square extends Shape {
double length; // 边长
public Square(double length) {
this.length = length;
}
// 获取正方形的面积
public double getArea() {
return Math.pow(length, 2);
}
// 获取正方形的周长
public double getLength() {
return 4 * length;
}
}
// 定义三角形类
public class Triangle extends Shape {
double a, b, c; // 三边长
public Triangle(double a, double b, double c) {
this.a = a;
this.b = b;
this.c = c;
}
// 获取三角形的面积
public double getArea() {
double p = getLength() / 2;
return Math.sqrt(p * (p - a) * (p - b) * (p - c));
}
// 获取三角形的周长
public double getLength() {
return a + b + c;
}
}
```
在Circle、Square和Triangle类中,我们分别重写了基类Shape中的getArea()和getLength()方法,来实现具体的面积和周长的计算。
最后,我们用ShapeI接口实现圆、正方形和三角形的类,并计算各种图形的面积和周长,具体代码如下:
```java
// 用ShapeI接口实现圆类
public class CircleI implements ShapeI {
double radius; // 半径
public CircleI(double radius) {
this.radius = radius;
}
// 获取圆的面积
public double getArea() {
return Math.PI * Math.pow(radius, 2);
}
// 获取圆的周长
public double getLength() {
return 2 * Math.PI * radius;
}
}
// 用ShapeI接口实现正方形类
public class SquareI implements ShapeI {
double length; // 边长
public SquareI(double length) {
this.length = length;
}
// 获取正方形的面积
public double getArea() {
return Math.pow(length, 2);
}
// 获取正方形的周长
public double getLength() {
return 4 * length;
}
}
// 用ShapeI接口实现三角形类
public class TriangleI implements ShapeI {
double a, b, c; // 三边长
public TriangleI(double a, double b, double c) {
this.a = a;
this.b = b;
this.c = c;
}
// 获取三角形的面积
public double getArea() {
double p = getLength() / 2;
return Math.sqrt(p * (p - a) * (p - b) * (p - c));
}
// 获取三角形的周长
public double getLength() {
return a + b + c;
}
}
```
在CircleI、SquareI和TriangleI类中,我们同样实现了ShapeI接口中的getArea()和getLength()方法,来计算具体的面积和周长。
以上就是用抽象类和接口类分别实现基本几何图形的计算的方法,希望可以帮助到你。
阅读全文