一、C++中纯虚函数与抽象类:

1、含有一个或多个纯虚函数的类成为抽象类,注意此处是纯虚函数,而不是虚函数。

2、如果一个子类继承抽象类,则必须实现父类中的纯虚函数,否则该类也为抽象类。

3、如果一个类中含有虚函数,则必须将该类的析构函数声明为虚函数。

4、虚函数与纯虚函数的声明:

virtual void draw();//虚函数

virtual void draw() = 0;//纯虚函数

5、C++中支持两种多态性:

编译时多态:通过重载函数实现。

运行时多态:通过虚函数实现。

二、Java抽象函数与抽象类:

1、含有抽象方法的类成为抽象类,但抽象类不一定含有抽象方法。抽象类不能创建实例。

2、抽象方法必须使用abstract关键字修饰。

3、如果非抽象子类继承抽象类,则必须重写父类中所有的抽象方法。

三、C++接口:一个类中除了构造函数和析构函数外,只有纯虚函数,则该类成为接口 。

四、代码实现:

 #include <iostream>

 using namespace std;

 //含有一个或多个纯虚函数的类成为抽象类,注意:此处指的是纯虚函数而不是虚函数
//纯虚函数的定义:virtual void draw() = 0;
//如果继承抽象类,则必须实现父类中所有的纯虚函数,否则该子类也为抽象类
//如果一个类中包含虚函数,则必须将本类的析构函数声明为虚函数。
class Shape
{
public:
Shape(){
}
virtual ~Shape(){
}
virtual double getArea() = ;//纯虚函数
virtual double getP() = ;
virtual void draw() = ;
}; class Circle : public Shape
{
public:
Circle(double r):itsRadius(r){
}
virtual ~Circle(){ }
double getArea(){
return 3.14 * itsRadius * itsRadius;
}
double getP(){
return * 3.14 * itsRadius;
}
void draw(){
cout<<"draw Circle..."<<endl;
}
private:
double itsRadius;
} ; class Rectangle : public Shape
{
public:
Rectangle(int w,int h):wid(w),hei(h){
}
virtual ~Rectangle(){
}
double getArea()
{
return wid * hei;
}
double getP()
{
return *(wid + hei);
}
void draw()
{
for(int i = ;i < ;i++)
{
for(int j = ;j < ;j++)
{
cout<<"X ";
}
cout<<endl;
}
}
private:
int wid;
int hei;
};
int main()
{
int number;
bool flag = false; Shape *shape;
while(flag == false)
{
cout<<"请输入数字:(1)圆形 (2)矩形 (0)退出:";
cin>>number;
switch(number)
{
case :
shape = new Circle(10.0);
break;
case :
shape = new Rectangle(,);
break;
case :
flag = true;
break;
} if(flag == false)
{
shape->draw();
delete shape;
}
}
return ;
}

后续更新中....

最新文章

  1. webapi+Task并行请求不同接口实例
  2. Git &amp; GitHub
  3. MVC5:使用Ajax和HTML5实现文件上传功能
  4. Linux驱动开发学习笔记(1):LINUX驱动版本的hello world
  5. 【Web】Eclipse + Maven + Struts搭建服务器
  6. thinkphp中M()和D()的理解
  7. 全国行政区划代码(json对象版)
  8. # 20145210 《Java程序设计》第03周学习总结
  9. Android优化系列之ListView优化老生常谈
  10. vmware-tools安装指南
  11. html 标签的嵌套规则
  12. windows和linux套接字中的select机制浅析
  13. LeetCode 322. Coin Change
  14. 洛谷P2664 树上游戏(点分治)
  15. 安装ODBC前需要安装Visual C++
  16. C++ 抽象类与接口
  17. Appium Hybrid混合应用测试——Native切换WebView
  18. jsp/servlet环境搭建
  19. Codeforces Round #553 (Div. 2) D. Stas and the Queue at the Buffet 贪心+公式转化
  20. vue 动态修改 css

热门文章

  1. C#序列化与反序列化方式简单总结
  2. 【亚瑟士 ASICS 系列】
  3. JSON.stringify 在OA差旅中转换为字符串传给后端,(使用from表单的形式)
  4. HotSpotOverview.pdf
  5. PHP eof的使用
  6. cygwin和mingw的区别
  7. ORACLE 简化拼接
  8. SSIS 文件系统任务无法使用变量配置目标路径
  9. openssl创建非认证的https证书(红色的)
  10. Python 字符串格式化