您的位置:首页 > 编程语言 > C语言/C++

c语言实现继承和多态

2017-08-04 19:18 232 查看

继承

概念:继承机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能。这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现由简单到复杂的认知过程。

多态

        多态指同一个实体同时具有多种形式。它是面向对象程序设计的一个重要特征。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;
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: