抽象类:类中存在没有实现的方法,不能实例化
接口:类中的方法都没有实现。
在C++中,抽象类则说明类中有一部分方法是纯虚函数,接口则说明类中所有方法都是纯虚函数。
纯虚函数:方法没有函数体。在声明后面加上”=0”
例子:
#include <iostream>
using namespace std;
class Shape{
public:
//纯虚函数
virtual double calArea()=0;
virtual ~Shape(){
cout<<"~Shape()"<<endl;
}
};
class Point{
private:
double x, y;
public :
Point(double xx, double yy){
x = xx;
y = yy;
}
double getX(){
return x;
}
double getY(){
return y;
}
};
class Circ : public Shape{
private:
Point* point;
double r;
public:
Circ(double x, double y, double rr){
point = new Point(x,y);
r = rr;
}
double calArea(){
cout<<"Circ Area"<<endl;
return 3.14 * r * r;
}
~Circ(){
cout<<"~Circ()"<<endl;
}
};
int main(){
Shape * circ = new Circ(3, 4, 5);
cout <<circ->calArea()<<endl;
delete circ;
}
上述代码中,Shape类的calArea方法使用了纯虚函数,方法没有实现。所以该类也并不能实例化,能使用基类指针去指向子类,但不能单独使用。