首页 / C++ / C++中抽象类和接口详解
C++中抽象类和接口详解
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C++中抽象类和接口详解,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2255字,纯文字阅读大概需要4分钟。
内容图文
![C++中抽象类和接口详解](/upload/InfoBanner/zyjiaocheng/854/bcc1a1ff9f1141038b61483d9719bd9c.jpg)
1.抽象类
在面向对象编程中,抽象类是一种只能定义类型,不能生成对象的类,它是对一系列看上去不同,但是本质相同的具体概念的抽象。最典型的抽象类就是“图形”,三角形、矩形、圆都是图形,它们都有边长、面积属性,“图形”类就是对这系列的抽象。
程序设计中,我们可以定义一个表征图形的类,然后具体图形继承该类。图形类,即基类,定义如下:
class shape{
public:
double area(){ //求面积
//如何求??
}
};
实际上,只要是具体图形就有面积这个量,但是对“图形”求面积是没有任何意义的,只有在知道具体的图形类型之后才能求面积。所以对“图形”来说,area()函数无法实现,且不可让shape生成对象(生成对象无意义),这就需要把shape定义成一个抽象类,把area()函数声明为纯虚函数即可:
virtual double area() = 0; //纯虚函数
总结何为抽象类:其实,在c++中并没有抽象类的概念,要实现抽象类则需要通过纯虚函数实现。纯虚函数指的是只定义函数原型的成员函数。在c++的类中,只要存在纯虚函数,那么该类就是抽象类。
(1)每个具体图形的求面积算法不一样,所以加上virtual关键字,表明该函数是虚函数,在子类中重写时可以发生多态;
(2)为对shape类求面积无意义,所以加上“=0”表明该函数声明为纯虚函数,不需要定义函数体;
(3)抽象类不能生成对象,只能用作父类被继承,子类必须实现纯虚函数的具体功能,在子类中,父类的纯虚函数被实现后就变成虚函数,当然,如果子类没有实现父类的纯虚函数,那么子类也是抽象类一个。
class shape
{
public:
//纯虚函数
virtual double area() = 0;
};
//定义圆形类
class circle : public shape
{
private:
int r;
public:
circle(int a) : r(a)
{}
double area()
{
return r * r * 3.14;
}
};
//定义矩形类
class rectangle : public shape
{
private:
int x;
int y;
public:
rectangle(int a, int b) : x(a), y(b)
{}
double area()
{
return x * y;
}
};
int main(void)
{
rectangle r(5, 6);
circle c(5);
printf("圆形面积为: %.2lf\n", c.area());
printf("矩形面积为: %.2lf\n", r.area());
return 0;
}
编译运行:
2.接口
在第一节中,我们了解了何为抽象类(类中含有纯虚函数),那么理解什么是接口就简单了。C++中接口也是一种特殊的类,需要满足:
(1)类中没有定义任何成员变量
(2)类中所有成员函数都是共有且都是纯虚函数
举例:
class deviceOp
{
public:
virtual bool OpenDev() = 0;
virtual void CloseDev() = 0;
virtual bool WriteDev(const char* buf, int len) = 0;
virtual int ReadDev(char* buf, int len) = 0;
};
接口是一种特殊的抽象类,所以抽象类具有只能被继承不能创建对象的特征它也具备。
转载自:https://blog.csdn.net/qq_29344757/article/details/77346934
内容总结
以上是互联网集市为您收集整理的C++中抽象类和接口详解全部内容,希望文章能够帮你解决C++中抽象类和接口详解所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。