高级多态(三):复杂的抽象层次结构

来源:互联网 发布:java从入门到精通第4版 编辑:程序博客网 时间:2024/05/14 07:35

现在需要设计一组类,实现:动物(Animal),哺乳动物(Mammal),鱼类(Fish),并且实现Dog

类层次分析:

Animal,Mammal,Fish,都是抽象数据类型(ADT);

Mammal和Fish又分别继承自Animal;

Dog继承自Mammal;

类实现分析:

Animal基类,可实现动物都具有的:吃(Eat),睡(Sleep),运动(Move),繁衍(Reproduce),并且4个方法都是纯虚函数;

Mammal基类,哺乳动物的繁衍方式都一样,所以将繁衍(Reproduce)实现;

Fish基类,鱼类的繁衍方式都一样,所以将繁衍(Reproduce)实现;

Dog类,继承自Mammal,会实现:吃(Eat),睡(Sleep),运动(Move)。

class Animal{public:Animal(){};virtual ~Animal(){};virtual void eat() = 0;virtual void sleep() = 0;virtual void move() = 0;virtual void reproduce() = 0;private:};class Mammal : public Animal{public:Mammal(){};virtual ~Mammal(){};virtual void reproduce() { cout << "Mammal reproduce!" << endl; }private:};class Fish : public Animal{public:Fish(){};virtual ~Fish(){};virtual void reproduce() { cout << "Fish reproduce!" << endl; }private:};class Dog : public Mammal{public:Dog(){};~Dog(){};virtual void eat() { cout << "Dog eat!" << endl; }virtual void sleep(){ cout << "Dog sleep!" << endl; }virtual void move() { cout << "Dog move!" << endl; }private:};int _tmain(int argc, _TCHAR* argv[]){Dog dog;dog.eat();dog.move();dog.sleep();dog.reproduce();}
输出:

Dog eat!Dog move!Dog sleep!Mammal reproduce!请按任意键继续. . .



0 0
原创粉丝点击