用C语言定义一个哺乳动物类Mammal,再由此派生出狗类Dog类的对象
时间: 2024-11-20 10:40:08 浏览: 33
使用Animal和Mammal两个类来说明一般动物和哺乳动物的继承关系。C#代码[定义].pdf
5星 · 资源好评率100%
在C语言中,虽然它不是一种支持复杂继承的语言,我们可以利用结构体和指向结构体的指针来模拟这种概念。首先,我们可以定义一个基础的`Mammal`结构体表示一般的哺乳动物特性,然后创建一个`Dog`结构体作为`Mammal`的子结构体,添加特定于狗的属性。
```c
// 定义基本的哺乳动物类Mammal
typedef struct {
char* name; // 动物的名字
int age; // 年龄
enum { MAMMAL } type; // 动物类型
} Mammal;
// 定义派生自Mammal的狗类Dog
typedef struct {
Mammal base; // 继承自Mammal的基本信息
char* breed; // 狗的品种
void bark(); // 狗特有的叫声方法
} Dog;
// 实现Dog类中的bark方法
void Dog::bark() {
printf("汪汪!");
}
int main() {
// 创建Dog类的对象
Dog myDog = {"小狗", 1, "拉布拉多", };
printf("%s %d岁了,是只%s,正在叫:", myDog.name, myDog.age, myDog.breed);
myDog.bark(); // 调用bark方法
return 0;
}
```
在这个例子中,`myDog`是一个`Dog`类型的实例,它包含了`Mammal`的所有属性以及`Dog`特有的`breed`和`bark`方法。这展示了C语言中通过结构体和嵌套实现简单形式的多态性。
阅读全文