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语言模拟实现继承和多态
#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;
}










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值