动物(Animal类)有子类Human, Bird, Snake,共同特征为动物的名字(Name),每一类都有各自的行动方式(Action)。 实现其类层次关系。
时间: 2024-01-13 07:05:22 浏览: 26
根据题目要求,可以定义一个基类Animal,包含名字Name和行动方式Action,然后定义子类Human、Bird和Snake,继承Animal类,并分别实现各自的行动方式。具体实现如下:
```C++
class Animal {
public:
string Name;
virtual void Action() = 0; //纯虚函数,表示Animal类没有具体的行动方式,必须由其子类来实现
};
class Human: public Animal {
public:
void Action() {
cout << "I can walk and talk." << endl;
}
};
class Bird: public Animal {
public:
void Action() {
cout << "I can fly." << endl;
}
};
class Snake: public Animal {
public:
void Action() {
cout << "I can crawl." << endl;
}
};
```
在这个实现中,Animal类是一个抽象类,因为它包含了一个纯虚函数Action,没有具体的实现。Human、Bird和Snake类都继承自Animal类,并分别实现了自己的行动方式。这样,我们就可以通过Animal类来创建不同类型的动物,并调用它们各自的行动方式,例如:
```C++
Animal* animal1 = new Human();
animal1->Name = "Tom";
animal1->Action(); //输出"I can walk and talk."
Animal* animal2 = new Bird();
animal2->Name = "Jerry";
animal2->Action(); //输出"I can fly."
Animal* animal3 = new Snake();
animal3->Name = "Lucy";
animal3->Action(); //输出"I can crawl."
```
这样的实现方式可以很好地体现面向对象的思想,通过继承和多态来实现不同类型的动物的行动方式。