编写一个程序,声明抽象基类shape,由它派生出3个派生类: circle (圆形)、rectangle(矩形)、triangle (三角形),用一个函数printcircum(const shape &s)分别输出以上三者的周长,3个图形的数据在定义对象时给定。
时间: 2023-05-02 19:03:31 浏览: 90
这道题目要求编写一个程序,声明抽象基类shape,由它派生出3个派生类:circle(圆形)、rectangle(矩形)和triangle(三角形)。并要求用一个函数printcircum(const shape &s),分别输出上述三者的周长。三个图形的数据在定义对象时给定。
相关问题
java 定义抽象基类shape_由它派生出三个派生类_编写一个程序,声明抽象基类Shape,由它派生出3个派生类:Circle(圆形)、Rectangle(矩形)、Triangle(三角形),用一个...
抱歉,我之前的回答中可能出现了一些问题。以下是一个更符合你要求的 Java 程序:
```java
// 定义抽象基类 Shape
abstract class Shape {
// 定义抽象方法 area,表示计算形状的面积
abstract double area();
}
// 定义派生类 Circle,表示圆形
class Circle extends Shape {
// 定义圆形的半径
double radius;
// 构造函数,初始化半径
Circle(double r) {
radius = r;
}
// 实现抽象方法 area,计算圆形的面积
double area() {
return Math.PI * radius * radius;
}
}
// 定义派生类 Rectangle,表示矩形
class Rectangle extends Shape {
// 定义矩形的宽和高
double width, height;
// 构造函数,初始化宽和高
Rectangle(double w, double h) {
width = w;
height = h;
}
// 实现抽象方法 area,计算矩形的面积
double area() {
return width * height;
}
}
// 定义派生类 Triangle,表示三角形
class Triangle extends Shape {
// 定义三角形的底和高
double base, height;
// 构造函数,初始化底和高
Triangle(double b, double h) {
base = b;
height = h;
}
// 实现抽象方法 area,计算三角形的面积
double area() {
return 0.5 * base * height;
}
}
// 主类
class Main {
public static void main(String[] args) {
// 创建圆形对象,计算面积并输出
Circle c = new Circle(5);
System.out.println("Circle area: " + c.area());
// 创建矩形对象,计算面积并输出
Rectangle r = new Rectangle(4, 6);
System.out.println("Rectangle area: " + r.area());
// 创建三角形对象,计算面积并输出
Triangle t = new Triangle(3, 8);
System.out.println("Triangle area: " + t.area());
}
}
```
在这个程序中,我们定义了抽象基类 `Shape`,其中包含一个抽象方法 `area()`,表示计算形状的面积。然后我们分别定义了三个派生类 `Circle`、`Rectangle` 和 `Triangle`,并实现了它们的 `area()` 方法。
在 `main` 函数中,我们创建了一个圆形、一个矩形和一个三角形的实例,并分别调用它们的 `area()` 方法,输出它们的面积。
希望这个程序能够帮助到你!
编写一个程序,声明抽象基类shape,由它派生出3个派生类: circle (圆形)、rectangle(矩形)、triangle (三角形),用一个函数printcircum(const shape
& s)来输出每个派生类的周长。其中,printcircum函数的参数为shape类的引用,因为它可以接受任何派生类的对象作为参数。
程序如下:
```c++
#include <iostream>
using namespace std;
class shape {
public:
virtual double circumference() const = 0; // 纯虚函数
};
class circle : public shape {
private:
double radius;
public:
circle(double r) : radius(r) {}
double circumference() const {
return 2 * 3.14 * radius;
}
};
class rectangle : public shape {
private:
double length, width;
public:
rectangle(double l, double w) : length(l), width(w) {}
double circumference() const {
return 2 * (length + width);
}
};
class triangle : public shape {
private:
double a, b, c;
public:
triangle(double x, double y, double z) : a(x), b(y), c(z) {}
double circumference() const {
return a + b + c;
}
};
void printcircum(const shape& s) {
cout << "周长为:" << s.circumference() << endl;
}
int main() {
circle c(5);
rectangle r(3, 4);
triangle t(3, 4, 5);
printcircum(c);
printcircum(r);
printcircum(t);
return 0;
}
```
运行结果:
```
周长为:31.4
周长为:14
周长为:12
```
阅读全文