第17讲抽象类 教学目的与要求: 了解抽象类的综合程序设计 掌握纯虚函数和抽象类。 教学内容提要: 纯虚函数; 2、抽象类; 3、综合举例; 教学重点:纯虚函数与抽象类的声明和使用。 教学难点:纯虚函数与抽象类的声明和使用。 教学进度:P210~P217 教学过程:
第17讲 抽象类 •教学目的与要求: 了解抽象类的综合程序设计。 掌握纯虚函数和抽象类。 •教学内容提要: 1、 纯虚函数; 2、抽象类; 3、综合举例; •教学重点:纯虚函数与抽象类的声明和使用。 •教学难点:纯虚函数与抽象类的声明和使用。 •教学进度:P210~P217 •教学过程:
171纯虚函数 1、纯虚函数是一个在基类中说明的虚函数,它在该基类中没有 定义具体的操作内容,要求各派生类根据实际需要定义自己 的版本。 2、纯虚函数的声明格式为: virtual函数类型函数名(参数表)=0; 注意: (1)、声明为纯虚函数之后,基类中就不再给出函数的实现部 分。 (2)、纯虚函数的函数体由派生类给出。 (3)、在C++中,还有一种情况是空的虚函数,空的虚函数是 指函数体为空的虚函数,请注意它和纯虚函数的区别。纯虚 函数根本就没有函数体,而空的虚函数的函数体为空(如: {}),前者所在的类是抽象类,不能直接进行实例化(不能 定义对象),而后者所在的类是可以实例化的
17.1 纯虚函数 1、纯虚函数是一个在基类中说明的虚函数,它在该基类中没有 定义具体的操作内容,要求各派生类根据实际需要定义自己 的版本。 2、纯虚函数的声明格式为: virtual 函数类型 函数名(参数表)=0; 注意: (1)、声明为纯虚函数之后,基类中就不再给出函数的实现部 分。 (2)、纯虚函数的函数体由派生类给出。 (3)、在C++中,还有一种情况是空的虚函数,空的虚函数是 指函数体为空的虚函数,请注意它和纯虚函数的区别。纯虚 函数根本就没有函数体,而空的虚函数的函数体为空(如: { }),前者所在的类是抽象类,不能直接进行实例化(不能 定义对象),而后者所在的类是可以实例化的
例17纯虚函数的使用。 #include<iostream h> class circle i public void setr(int xr=x; virtual void showo=0;∥纯虚函数 protected int re class Area: public Circlet public void showoi cout<<Area is"<<3.14 r*r<<endl; ∥重定义虚函数shw( class perimeter: public circle public void showoicout<<Perimeter is<<2*3.14*r<<endl; ∥重定义虚函数show(
例17.1纯虚函数的使用。 #include<iostream.h> class Circle { public: void setr(int x){ r=x; } virtual void show()=0; // 纯虚函数 protected: int r; }; class Area:public Circle{ public: void show(){ cout<<"Area is "<<3.14*r*r<<endl;} }; // 重定义虚函数show() class Perimeter:public Circle{ public: void show(){cout<<"Perimeter is "<<2*3.14*r<<endl;} }; // 重定义虚函数show( )
void maino Circle *ptrs Area obl Perimeter ob2 obl. setr(10) ob2 setr(10); ptr=&obl; ptr->show 0; ptr=&ob2 ptr->showO
void main() { Circle *ptr; Area ob1; Perimeter ob2; ob1.setr(10); ob2.setr(10); ptr=&ob1; ptr->show(); ptr=&ob2; ptr->show(); }
172抽象类 抽象类是一种特殊的类,它为一族类提供统一的操作界 面 1、抽象类:带有纯虚函数的类 2、抽象类的特征: (1)、抽象类不能实例化,即不能定义一个抽象类的对象主 要作用是通过它为一个类族建立一个公共的接口,使它们 能够更有效地发挥多态特征。而接口的完整实现(即纯虚函 数的函数体),要由派生类自己给出。 (2)、抽象类派生出新的类之后,如果派生类给出所有纯虚 函数的函数实现,这个派生类就可以定义自己的对象,因 而不再是抽象类;反之,如果派生类没有给出全部纯虚函 数的实现,还继承了部分纯虚函数,这时的派生类仍然是 个抽象类
17.2 抽象类 抽象类是一种特殊的类,它为一族类提供统一的操作界 面。 1、抽象类:带有纯虚函数的类 2、抽象类的特征: (1)、抽象类不能实例化,即不能定义一个抽象类的对象主 要作用是通过它为一个类族建立一个公共的接口,使它们 能够更有效地发挥多态特征。而接口的完整实现(即纯虚函 数的函数体),要由派生类自己给出。 (2)、抽象类派生出新的类之后,如果派生类给出所有纯虚 函数的函数实现,这个派生类就可以定义自己的对象,因 而不再是抽象类;反之,如果派生类没有给出全部纯虚函 数的实现,还继承了部分纯虚函数,这时的派生类仍然是 一个抽象类