類和對象-----多態

// lesson_4.cpp : 定義控制檯應用程序的入口點。
//


動態的多態:一個接口,多個實現,不同的對象有相同的基類,接收同一消息時,產生不同的反應


#include "stdafx.h"
#include <iostream>
using namespace std;


class Biology
{
public:
void grow(){ cout << "biology grow" << endl; }
};


class Animal :public Biology
{
public:
void grow(){ cout << "animal grow" << endl; }
};


class Rabbit : public Animal
{
public:
void grow(){ cout << "rabbit grow" << endl; }
};




int _tmain(int argc, _TCHAR* argv[])
{
Animal animal;
Biology * biology = &animal;
biology->grow();                     //若是函數體前不加virtual 實現基類的方法


Biology * ani = new Animal;
ani->grow();


Animal * anil1 = new Rabbit;
anil1->grow();
system("pause");
return 0;
}


多態的注意點:

(1)virtual實現的是動態的多態

(2)實現多態,函數名,返回值,形參的個數和類型必須一樣

(3)基類函數前加virtual,派生類默認聲明爲virtual,可以繼承

(4)只有當基類指針指向派生類對象的時候,調用virtual函數,並且子類中也有該方法,才構成多態



補充:

純虛函數和抽象類:

virtual grow() = 0;   純虛函數

含有純虛函數的類稱爲抽象類,不可以實例化

發佈了57 篇原創文章 · 獲贊 10 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章