繼承
概念:繼承機制是面向對象程式設計使代碼可以複用的最重要的手段,它允許程式員在保持原有類特性的基礎上進行擴充,增加功能。這樣産生新的類,稱派生類。繼承呈現了面向對象程式設計的層次結構,展現由簡單到複雜的認知過程。
多态
多态指同一個實體同時具有多種形式。它是面向對象程式設計的一個重要特征。C++中的多态性具體展現在運作和編譯兩個方面。運作時多态是動态多态,其具體引用的對象在運作時才能确定。編譯時多态是靜态多态,在編譯時就可以确定對象使用的形式。同一操作作用于不同的對象,可以有不同的解釋,産生不同的執行結果。在運作時,可以通過指向基類的指針,來調用實作派生類中的方法。
在面向對象語言中,接口的多種不同的實作方式即為多态。 允許将子類類型的指針指派給父類類型的指針。多态性在C++中都是通過 虛函數 實作的。 多态:同一操作作用于不同的對象,可以有不同的解釋,産生不同的執行結果。在運作時,可以通過指向基類的指針,來調用實作派生類中的方法。 C++中,實作多态有以下方法:虛函數, 抽象類 ,重載,覆寫,模版。 c++中的繼承多态
#include<iostream>
using namespace std;
class Base
{
public:
virtual void FunTest()//實作多态基類必須要有虛函數
{
cout << "Base" << endl;
}
};
class Dirval :public Base
{
public:
virtual void FunTest()//子類(virtual可以不寫,但基類的virtual必須寫)
{
cout << "Dirval" << endl;
}
};
void Test()
{
Base b;//定義一個基類對象
Dirval d;//定義一個子類對象
Base *p = &b;//定義一個基類指針指向基類對象
p->FunTest();//調用基類函數
p = &d;//指向子類對象
p->FunTest();//調用子類函數
}
int main()
{
Test();
system("pause");
return 0;
}
C語言模拟實作繼承和多态
#include<stdio.h>
typedef void(*FUN)();//函數指針
//C語言結構體中不能定義函數,則隻能用函數指針在外部實作函數的通路
struct _Base//基類
{
FUN fun;//通過函數指針通路外部函數
int a = 1;
};
struct _Dirval//子類
{
_Base _a;//子類定義一個基類對象可實作對基類的繼承
int b = 2;
};
void FunBase()//基類函數
{
printf("_Base\n");
}
void FunDirval()//子類函數
{
printf("_Dirval\n");
}
void Test()
{
_Base b;//定義一個基類對象
_Dirval d;//定義一個子類對象
b.fun = FunBase;//基類對象通路基類的外部函數
d._a.fun = FunDirval;//子類對象通路子類的外部函數
_Base* p = &b;//定義一個基類指針指向基類對象
p->fun();//調用基類的同名函數
p = (_Base*)&d;//基類指針指向子類對象
p->fun();//調用子類同名函數
}
int main()
{
Test();
system("pause");
return 0;
}