天天看點

c語言實作繼承和多态

繼承

概念:繼承機制是面向對象程式設計使代碼可以複用的最重要的手段,它允許程式員在保持原有類特性的基礎上進行擴充,增加功能。這樣産生新的類,稱派生類。繼承呈現了面向對象程式設計的層次結構,展現由簡單到複雜的認知過程。

多态

        多态指同一個實體同時具有多種形式。它是面向對象程式設計的一個重要特征。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語言實作繼承和多态

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;
}
           
c語言實作繼承和多态

繼續閱讀