码迷,mamicode.com
首页 > 编程语言 > 详细

第五十二课、c++中的抽象类和接口

时间:2017-02-06 13:10:15      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:blog   对象   style   成员   receive   sha   变量   clu   世界   

一、c++中的抽象类与纯虚函数

1、面向对象中抽象的概念

技术分享

(1)、现实中需要知道具体图形的类型才能求面积

(2)、图形类只是概念上的类型没有具体对象

2、面向对象中的抽象类

(1)、可用于表示现实世界中的抽象概念

(2)、是一种只能定义类型,而不能产生对象的类

(3)、只能被继承并重写相关的函数

(4)、直接特征是相关函数没有完整实现

3、c++中没有抽象类的概念

(1)、c++通过纯虚函数实现抽象类

(2)、纯虚函数是只定义原型的成员函数

(3)、一个c++类中存在纯虚函数就成了抽象类

技术分享

4、抽象类与纯虚函数的特点

(1)、抽象类只能用作父类被继承

(2)、子类必须实现纯虚函数的具体功能

(3)、纯虚函数被实现后成为虚函数

(4)、如果子类没有实现纯虚函数,则子类成为抽象类

#include<iostream>

using namespace std;

//抽象类
class Shape { public: virtual double area() = 0; //纯虚函数 };
//矩形
class Rect : public Shape { private: int ma; int mb; public: Rect(int a, int b) { ma = a; mb = b; } double area() { return ma*mb; } };
//圆
class Circle : public Shape { private: int mr; public: Circle(int r) { mr = r; } double area() { return 3.14*mr*mr; } }; void area(Shape* p)//但是可以定义指针,指向的是子类对象 { double r = p->area();//子类中重写后成为虚函数,展现多态 cout << "r = " << r << endl; } int main() { Rect rect(4, 5); Circle circle(10);

//Shape s;//报错,抽象类不能产生对象 area(
&rect);//20 area(&circle);//314 return 0; }

二、c++类的接口

(1)、类中没有定义任何成员变量

(2)、所有的成员函数都是公有的

(3)、所有的成员函数都是纯虚函数

(4)、接口是一种特殊的抽象类

#include <iostream>
#include <string>

using namespace std;

//类中无成员变量
//特殊的抽象类
class Channel { public://成员函数均为public virtual bool open() = 0;//成员函数均为虚函数 virtual void close() = 0; virtual bool send(char* buf, int len) = 0; virtual int receive(char* buf, int len) = 0; }; int main() { return 0; }

三、小结

(1)、抽象类用于描述现实世界中的抽象概念  

(2)、抽象类只能被继承不能创建对象

(3)、c++中没有抽象类的概念

(4)、c++通过纯虚函数实现抽象类

(5)、类中只存在纯虚函数的时候成为接口

(6)、接口是一种特殊的抽象类

 

第五十二课、c++中的抽象类和接口

标签:blog   对象   style   成员   receive   sha   变量   clu   世界   

原文地址:http://www.cnblogs.com/gui-lin/p/6369785.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!