文档详情

8.1 继承和派生类.ppt

发布:2017-07-07约3.34千字共20页下载文档
文本预览下载声明
Visual C++程序设计 第8章 继承与多态 * * 东南大学VC++课程06级 copyright: 柏毅 版本号:V2005.08-06.01 可以对派生类做以下几种变化: 全部或部分的继承基类的成员数据或成员函数。 增加新的成员变量和成员函数。 重新定义已有的成员函数。 改变现有的成员属性。 8.1继承与派生的概念 从已有的对象类型出发建立一种新的对象类型,使它部分或全部地继承原对象的特点和功能,这就是C++中的继承。派生是继承的直接产物,它通过继承已有的一个或多个类产生一个新的类,通过派生可以创建一种类族。 在定义一个类A时,若它使用了一个已定义类B的部分或全部成员,则称类A继承了类B,并称类B为基类或父类,称类A为派生类或子类。 单一继承:指一个派生类仅由一个基类派生。 多重继承:指一个派生类由两个或多个基类派生。 在校人员类 学生类 职工类 在校人员类 职工类 学生类 图11.1 单一继承和多重继承 class 类名:Access基类 { private: …… //私有成员说明 public: …… //公有成员说明 protected: …… //保护成员说明 }; 单一继承的一般格式为: class 类名:Access基类1, Access基类2, …Access基类n, { private: …… //私有成员说明 public: …… //公有成员说明 protected: …… //保护成员说明 }; 其中,Access用于规定基类中的成员在派生类中的访问权限,即:public,private和protected,缺省时为private。 指定Access,即派生时的不同访问权限,直接影响到基类中的成员在派生类中的访问权限。 多重继承的一般格式为: 基类中所有成员在公有派生类中保持各个成员的访问权限。 基类中说明为public的成员,在派生类中仍保持为public的成员,在派生类中或在派生类外都可以直接使用这些成员。 基类中说明为private的成员,属于基类私有的,在公有派生类中不能直接使用基类中的私有成员,必须通过该基类公有的或保护的成员函数来间接使用基类中的私有成员。 基类中说明为protected成员,可以在公有派生类中直接使用它们,其用法与公有成员完全一样。但在派生类之外,不可直接访问这种类型的成员,必须通过派生类的公有的或保护的成员函数或者基类的成员函数才能访问它。 (1)公有派生: #includeiostream.h class A{ int x; protected: int y; public: int z; A(int a, int b, int c) { x=a; y=b; z=c;} void Setx(int a){x=a;} void Sety(int a){y=a;} int Getx( ){return x;} int Gety( ){return y;} void ShowB( ) {coutx=x\ty=y\tz=z\n;} }; 例8.1 公有派生 class B:public A{ int Length, Width; public: B(int a, int b, int c, int d, int e):A(a, b, c) //D { Length=d; Width=e;} void Show( ) {coutLength=Length\tWidth=Width\n; coutx=Getx()\ty=y\tz=z\n; //E } int Sum( ) { return(Getx( )+y+z+Length+Width);} //F }; void main(void) { B b1(1,2,3,4,5); b1.ShowB( ); //G b1.Show( ); coutSum=b1.Sum( )\n; couty=b1.Gety( )\t; coutz=b1.z\n; //H } 说明 D行:“:”后的A(a,b,c)的作用是在派生类的构造函数中调用基类的构造函数。F行:在派生类的成员函数中,不能直接使用基类的私有成员,必须由基类的公有成员函数Gex( )来获取x的值。 (2)私有派生: 基类中公有成员和保护成员在派生类中均变为私有的,在派生类中仍可直接使用这些成员。 基类中的私有成员,在派生类中不可直接使用,只能通过基类的公有或保护成员函数间接使用它们。 在派生类之外派生类的对象不可直接使用基类中的公有或私有成员,必须通过派生类中的公有成员函数来间接使用它们。 #include
显示全部
相似文档