適合具備 C 語(yǔ)言基礎(chǔ)的 C 教程(七)
前言
在前面的教程中,闡述了繼承的相關(guān)內(nèi)容,其中就包括繼承之后數(shù)據(jù)成員的訪問(wèn)控制以及多重繼承,虛擬繼承等內(nèi)容,本節(jié)的內(nèi)容即將闡述另外一個(gè)面向?qū)ο蟮奶匦裕?strong>多態(tài),多態(tài)是面向?qū)ο缶幊倘筇匦灾弧?/p>
定義
如何通俗的話來(lái)解釋多態(tài)呢?我們印出來(lái)這樣一個(gè)例子:首先,我們說(shuō):人類用手吃飯是本能,而英國(guó)人是用刀叉吃飯,中國(guó)人則是用筷子吃飯,那現(xiàn)在有一個(gè)問(wèn)題了,當(dāng)我們問(wèn)這個(gè)人是怎么吃飯的,就不能簡(jiǎn)單地回答說(shuō)用筷子或者是用刀叉吃飯,應(yīng)該根據(jù)其所在地國(guó)別不同而采用不同的吃飯方式,這就是多態(tài)。
代碼實(shí)現(xiàn)
上述用通俗的話解釋了一下,那么現(xiàn)在我們編寫具體的代碼來(lái)實(shí)現(xiàn)一下,上述中有人類,有英國(guó)人,有中國(guó)人,那么我們定義一個(gè)Human
類,然后 EnglishMan
和Chinese
都繼承自Human
,代碼如下所示:
class Human
緊接著,我們編寫一下
{
public:
void eating(void) {cout << "use hand to eat" << endl;}
};
class EnglishMan : public Human
{
public:
void eating(void) {cout << "use knife to eat" << endl;}
};
class Chinese : public Human
{
public:
void eating(void) {cout << "use chopsticks to eat" << endl;}
};test
代碼,代碼如下所示:
void test_eating(Human