以前看资料只是理解多态是“一个接口,多种调用” ,但是没有理解其真正意思,不明白具体咋么实现。

不过看了这位博主的博客后对多态有了一些理解,链接: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;  
}

 

  个人理解,有不对的地方请指正。

 

posted on 2018-03-15 10:18  未完代码  阅读(119)  评论(0编辑  收藏  举报