利用抽象方法和抽象类来实现多形状的求面积和周长,首先定义基本几何图形的抽象基类(Shape),然后定义Shape的派生类Circle、Square和Triangle。要求首先画出类图(注意父类和子类之间的层次关系),然后通过抽象方法和方法覆盖来计算各种的面积和周长。(说明:这里只需计算Circle的面积和周长,Square和Triangle图形不需要计算!)
1个回答
关注
展开全部
代码如下:
abstract class Shape {
public abstract double getArea();
public abstract double getPerimeter();
class Circle extends Shape {
private double radius;
public Circle(double radius) {
this.radius = radius;
}
@Override
public double getArea() {
return Math.PI * radius * radius;
}
@Override
public double getPerimeter() {
return 2 * Math.PI * radius;
}
class Rectangle extends Shape {
private double width;
private double height;
public Rectangle(double width, double height) {
this.width = width;
this.height = height;
}
@Override
public double getArea() {
return width * height;
}
@Override
public double getPerimeter() {
return (width + height) * 2;
}
咨询记录 · 回答于2023-12-24
利用抽象方法和抽象类来实现多形状的求面积和周长
首先,我们需要定义一个基本几何图形的抽象基类(Shape)。这个基类将包含计算面积和周长的抽象方法。
然后,我们将定义Shape的派生类Circle、Square和Triangle。这些派生类将覆盖基类中的抽象方法,以提供具体的面积和周长计算逻辑。
接下来,我们需要画出类图,以明确父类和子类之间的层次关系。这个类图将清晰地展示各个类之间的继承关系。
最后,我们将通过抽象方法和方法覆盖来实现各种形状的面积和周长计算。这里我们只需要计算Circle的面积和周长,而Square和Triangle的图形不需要进行计算。
代码如下:
abstract class Shape {
public abstract double getArea();
public abstract double getPerimeter();
class Circle extends Shape {
private double radius;
public Circle(double radius) {
this.radius = radius;
}
@Override
public double getArea() {
return Math.PI * radius * radius;
}
@Override
public double getPerimeter() {
return 2 * Math.PI * radius;
}
class Rectangle extends Shape {
private double width;
private double height;
public Rectangle(double width, double height) {
this.width = width;
this.height = height;
}
@Override
public double getArea() {
return width * height;
}
@Override
public double getPerimeter() {
return (width + height) * 2;
}
public class ShapeTest {
public static void main(String[] args) {
Circle circle = new Circle(5);
System.out.println("圆面积:" + circle.getArea() + ",圆周长:" + circle.getPerimeter());
Rectangle rect = new Rectangle(6, 9);
System.out.println("矩形面积:" + rect.getArea() + ",矩形周长:" + rect.getPerimeter());
}