以前看资料只是理解多态是“一个接口,多种调用” ,但是没有理解其真正意思,不明白具体咋么实现。
不过看了这位博主的博客后对多态有了一些理解,链接:https://www.cnblogs.com/dormant/p/5223215.html
多态我的理解是几个派生类继承了基类,比如定义father为基类,father中有一个方法为eat,son1,son2,son3 为派生类。派生类对基类中的eat方法进行了不同的重写,增加了许新多功能,但是三个派生类增加的功能不一样。现在我们要调用son1中的eat方法,有两种方式,一种是直接创建派生类son1的对象调用eat方法。另一种是通过基类father去调用派生类son1的eat方法。两种方式都可以实现son1的eat方法调用。但是如果我们用第一种方式,就有如下不方便:如果还想使用son2的eat方法,就必须新定义一个son2对象,调用son3中的eat,也必须新定义一个son2对象。这样就要定义三个对象。但是用第二种方式,你就只需创建一个father对象,就可以实现对几个派生类方法的调用。所以就实现了一个接口,多种调用。
具体过程如下:
class father { public: virtual void eat() { cout<<" father eat"<<endl; } }; class son1: class father { public: void eat() { cout<<"son1 eat"<<endl; } }; class son2: class father { public: void eat() { cout<<"son2 eat"<<endl; } }; class son3: class father { public: void eat() { cout<<"son3 eat"<<endl; } }; father *a=nullptr int main(void) { a = new son1(); a->eat(); a=new son2(); a->eat(); a=new son3(); a->eat(); return 0; }
个人理解,有不对的地方请指正。