C++ 接口(抽象类)
设计抽象类(通常称为 ABC)的目的,是为了给其他类提供一个可以继承的适当的基类。抽象类不能被用于实例化对象,它只能作为接口使用。如果试图实例化一个抽象类的对象,会导致编译错误。
因此,如果一个 ABC 的子类需要被实例化,则必须实现每个虚函数,这也意味着 C++ 支持使用 ABC 声明接口。如果没有在派生类中重载纯虚函数,就尝试实例化该类的对象,会导致编译错误。
可用于实例化对象的类被称为具体类。
如果类中至少有一个函数被声明为纯虚函数,则这个类就是抽象类。纯虚函数是通过在声明中使用 "= 0" 来指定的
具体代码:
#include <iostream>
using namespace std;
class ComputeSum {
public:
//提供接口框架的纯虚函数
virtual int getArea()=0;
void setWidth(int n){
width=n;
}
void setLength(int m){
length =m;
}
protected:
int width;
int length;
};
class GetAddition: public ComputeSum{
public:
int getArea(){
return (width+length);
}
};
class GetProduct: public ComputeSum{
public:
int getArea(){
return width*length;
}
};
int main( )
{
GetAddition sum1;
GetProduct sum2;
sum1.setWidth(23);
sum1.setLength(28);
sum2.setWidth(45);
sum2.setLength(66);
cout<<"Product:"<<sum1.getArea()<<endl;
cout<<"Addition:"<<sum2.getArea()<<endl;
return 0;
}
输出结果:
Product:51
Addition:2970
请按任意键继续. . .