如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
三角形对象的定义问题class矩形{//新的数据类型private:double长,宽;//属性public:矩形(doublex=1,doubley=1){长=x;宽=y;}double面积(){return长*宽;}};class三角形:public矩形{public:double面积(){return矩形::面积()/2;}};第十一二章继承与派生,多态性内容:1、继承与派生2、派生方式3、派生的构造函数4、虚函数与多态性重点:继承与派生,派生的构造函数,多态性1、派生与继承1)类的可重用性(1)重新定义类(2)派生新类2)派生类声明class派生类名:[继承方式]基类名{新增成员;};比如:class三角形:public矩形{public:double面积(){return矩形::面积()/2;}};示例:计算长方体体积class矩形{//新的数据类型private:double长,宽;//属性public:矩形(doublex=1,doubley=1){长=x;宽=y;}double面积(){return长*宽;}};class长方体:矩形{private:double高;public:长方体(doublex=1,doubley=1,doublez=1):矩形(x,y){高=z;}double体积(){return面积()*高;}};4)类的图示2、继承方式1)访问属性的概念(1)公有继承基类的私有成员在派生类中不可访问基类的其他成员在派生类中属性保持不变一般地继承,都采用公有继承(2)私有继承基类中的私有成员在派生类中不可访问基类中的其他成员在派生类中变为私有成员一般很少使用私有继承(3)保护成员和保护继承类的保护成员对派生类具有公有成员属性,但对非派生类或类外函数具有私有成员属性.基类中的私有成员在派生类中不可访问基类中的其他成员在派生类中变为保护成员保护性继承也是常见的继承3、派生类的构造函数示例:class立方体:public矩形{private:double高;public:立方体(doublex,doubley,doublez):矩形(x,y){高=z;}double体积(){return面积()*高;}};也就是说,构造函数初始化基类成员是通过调用基类的构造函数来实现的,还必须在函数体外。1)一般形式派生类构造函数(参数表):基类构造函数(参数){派生类成员赋值语句;}//基类数据成员不可见立方体(doublex,doubley,doublez):矩形(x,y){高=z;}//但不能如下形式立方体(doublex,doubley,doublez){矩形(x,y);高=z;}//基类数据成员可见立方体(doublex=1,doubley=1,doublez=1){长=x;宽=y;高=z;}4、重载(override)在三角形类中有两个面积()一个在基类中,一个在派生类中这样的重载(同名)称为override,特点是参数相同。5、基类与派生类的转换1)可以用派生类对象赋值基类对象示例:长方体d(a,b,c);矩形ret;ret=d;原因:派生类包含基类2)不能用基类对象赋值派生类对象示例:矩形ret(a,b);长方体d;d=ret;3)派生类对象的地址可以赋值给基类指针示例:矩形*p;长方体d(a,b,c);p=&d;原因:派生类包含基类,引用也一样6、虚函数与多态性1)虚函数一个成员函数如果在其前面加上修饰词virtual则该函数称为虚函数。比如下面的成员函数:virtualboolon_Idle(){returnfalse;}2)如果基类中某个函数是虚函数,则在其派生类中override该函数时,不用再加virtual修饰词也就是说,virtual是可以继承的。3)如果一个虚函数未定义,则成为纯虚函数。比如:virtualboolon_Idle()=0;//表示未定义4)多态性—是指功能不同的函数可以用同一个函数名比如:strings1=“你”,s1=“我”;cout<<s1+s2<<endl;inta=12,b=15;cout<<a+b<<endl;分数f1(1,2),f2(3,4);cout<<f1+f2<<endl;多态性与什么相关?多态性与重载相关,C++允许重载,即相同函数名允许不同的实现,就产生了多态性。5)静态多态性(静态关联)如果重载是采用overload,即同名函数的不同实现可以根据它的参数来决定,则称为静态多态性,因为,在编译的时候,编译程序就可以