1 / 34
文档名称:

【精品】PPT课件 第11章 类间关系的实现.ppt

格式:ppt   页数:34
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

【精品】PPT课件 第11章 类间关系的实现.ppt

上传人:12344 2014/12/6 文件大小:0 KB

下载得到文件列表

【精品】PPT课件 第11章 类间关系的实现.ppt

文档介绍

文档介绍:第11章类间关系的实现
一般—特殊关系的实现
多态性与虚函数
整体—部分关系的实现
关联关系的实现
关于类层次的总结
学习目的:
① 掌握类间关系的C++实现;
② 了解多态性与虚函数的概念。
一般—特殊关系的实现
类的继承与派生
赋值兼容规则
两义性与作用域分辨
C++提供了描述一般—特殊关系的语法,在C++中称为类的派生或继承,通常分为单一继承和多重继承。在C++ 中常把一般—特殊关系中的一般类称为父类,而把特殊类称为子类。
类的继承与派生
1. 单一继承
派生类说明格式:
class <DerivedClassName > : <AccessSpecifier> <BaseClassName>
{ ……};
派生类初始化构造函数格式如下:
ClassName::ClassName(ArgList0) : DerivedClassName(ArgList1)
{ ……}
[] 描述由矩形、正方形组成的平面图形系统
类体中的成员为子类所特有的数据成员和成员函数,虽然没有在子类中写明所继承的父类成员,但是父类成员在一定限制下属于子类。
矩形


位置
求面积
求周长
求位置
正方形
求面积
求周长
求位置
边长
#include ""
class CRectangle //矩形类
{
public:
CPoint m_cpLocation; //图形所在位置
int m_nWidth; //图形的宽度
int m_nHeight; //图形的高度
CRectangle(int nX, int nY, int nWidth, int nHeight);
int GetArea(); //求面积
int GetPerimeter(); //求周长
CPoint& GetPosition(); //返回图形位置
};
CRectangle::
CRectangle(int nX,int nY,int nW,int nH):m_cpLocation(nX,nY)
{
m_nWidth=nW;
m_nHeight=nH;
}
int CRectangle::GetArea()
{ return m_nWidth*m_nHeight; }
int CRectangle::GetPerimeter()
{ return m_nWidth+m_nWidth+m_nHeight+m_nHeight; }
CPoint& CRectangle::GetPosition()
{ return this->m_cpLocation; }
class CSquare : public CRectangle //正方形类,派生自矩形类
{
public:
CSquare(int nX, int nY, int nEdge);
int GetEdge(); //返回边长
};
CSquare::CSquare(int nX, int nY, int nEdge) : CRectangle(nX, nY, nEdge, nEdge)
{ }
int CSquare::GetEdge()
{ return m_nWidth; }
void main()
{
CRectangle r(1,1,2,3);
CSquare s(0,0,2);
cout<<()<<endl<<()<<endl;
类的继承与派生
2. 基类成员访问控制
有两个因素同时控制着派生类对基类成员的访问权限,这两个因素就是基类类体中类成员的访问说明符,及派生类的派生方式。
基类成员在派生类中的访问权限
成类员
派生方式
private
protected
public
private
不可访问
私有
私有
protected
不可访问
保护
保护
public
不可访问
保护
公有
基类的private成员将不被子类继承,且不能被子类成员访问。
private派生方式: 基类成员(private类除外)作为子类的private类 型成员。
public派生方式: 基类成员(private类除外)作为子类的相同类型 成员。
protected派生方式: 基类成员(private类除外)作为子类的protected 类型成员。
类的继承与派生
3 多重继承
多重继承在C++中实现方式如下:
class<ClassName0> : <AccessSpeci