抽象类的实例
请看下面的实例,基类 Shape 提供了一个接口 getArea(),在两个派生类 Rectangle 和 Triangle 中分别实现了 getArea():
实例
#include<iostream>usingnamespacestd; // 基类classShape{public: // 提供接口框架的纯虚函数 virtualintgetArea() = 0; voidsetWidth(intw) { width = w; } voidsetHeight(inth) { height = h; }protected: intwidth; intheight;}; // 派生类classRectangle: publicShape{public: intgetArea() { return(width * height); }};classTriangle: publicShape{public: intgetArea() { return(width * height)/2; }}; intmain(void){ RectangleRect; Triangle Tri; Rect.setWidth(5); Rect.setHeight(7); // 输出对象的面积 cout << "Total Rectangle area: " << Rect.getArea() << endl; Tri.setWidth(5); Tri.setHeight(7); // 输出对象的面积 cout << "Total Triangle area: " << Tri.getArea() << endl; return0;}
当上面的代码被编译和执行时,它会产生下列结果:
TotalRectangle area:35
TotalTriangle area:17
从上面的实例中,我们可以看到一个抽象类是如何定义一个接口 getArea(),两个派生类是如何通过不同的计算面积的算法来实现这个相同的函数。