在c++和java中我们会定义很多类,但是我们会遇到在对类进行new实例化时会遇到“不能实例化抽象类”或者“抽象类不能实例化”,针对这个问题要首先理解两个内容“抽象类”和“实例化”
如果只是想单纯的理解,那么意思就是你画了一个有四条边的图形你说是矩形
但是这是不可以的,为什么?因为矩形还有一个条件就是要四个内角是直角
其中画有四条边的图形就是抽象类,矩形就是实例化
如果理解了含义但是不懂代码中的定义,那么那么就百度百度定义!定义真的很重要!
抽象类定义:
含有纯虚函数的类称为抽象类
实例化的定义:
用类创建对象的过程
纯虚函数的定义:
一个只有函数名、参数和返回值类型,没有函数体的函数成为纯虚函数。
这一层懂了当然最好
如果不懂再来看看代码test 中shape未编译通过
#include <iostream>
using namespace std;
//定义一个形状抽象类(基类)
class Shape {
//保护继承 ,其派生类也会继承保护成员
protected:
double x;
double y;
//公有继承
public:
void set(double i, double j) {
x = i;
y = j;
}
//纯虚函数
virtual void area() = 0;
};
//定义矩形类并定义其面积为长*宽(派生类)
class Rectangle : public Shape {
void area() { cout << x * y << endl; }
};
int main() {
Rectangle rec; //定义一个矩形对象(实例化)
// Shape rec;
Shape *p = &rec; //定义一个抽象类的指针,并使它指向矩形对象
p->set(2, 4); //调用
p->area();
return 0;
}