1. 什么是抽象类

(1)面向对象中的抽象概念

思考:抽象图形中图形的面积如何计算

(2)现实中:需要知道具体的图形类型,才能求面积。

(3)Shape只是一个概念上的类型没有具体对象

2. 面向对象中的抽象类

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

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

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

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

3. 抽象类与纯虚函数

(1)C++语言中没有抽象类的概念,它是通过纯虚函数实现抽象类,当一个C++类中存在纯虚函数就成了抽象类

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

(3)纯虚函数的语法规则virtual double area() = 0; // “=0”用于告诉编译器当前是声明纯虚函数,因此不需要定义函数体。

【编程实验】抽象类初探

#include <iostream>

using namespace std;

//抽象类
class Shape
{
public:
    ; //纯虚函数,没有具体的实现
};

//矩形类
class Rect : public Shape
{
    int ma;
    int mb;
public:
    Rect(int a, int b)
    {
        ma = a;
        mb = b;
    }

    //子类中实现纯虚函数
    double area()
    {
        return ma * mb;
    }
};

//圆类
class Circle : public Shape
{
    int mr;
public:
    Circle(int r)
    {
        mr = r;
    }

    double area()
    {
        return 3.14 * mr * mr;
    }
};

void area(Shape* p)
{
    double ret = p->area(); //多态
    cout << "area = " << ret << endl;
}

int main()
{
    Rect rect(, );
    Circle circle();

    area(&rect);
    area(&circle);

    ;
}

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

(5)子类必须实现纯虚函数的具体功能,如果子类没有实现纯虚函数,则子类也成为抽象类

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

4. C++中的接口

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

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

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

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

【编程实验】接口初探

#include <iostream>

using namespace std;

//接口示例
class Channel
{
public:
    ;
    ;
    ;
    ;
};

int main()
{
    ;
}

5. 小结

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

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

(3)C++是通过纯虚函数实现抽象类,

(4)接口是一种特殊的抽象类,它是只存在纯虚函数的抽象类

(5)C++中没有真正的抽象类接口的概念

第52课 C++中的抽象类和接口的更多相关文章

  1. C++中的抽象类和接口

    1,在 C++ 语言中,并不直接支持面向对象中的抽象类和接口概念,但是 C++ 语言 却可以间接实现这些概念: 2,什么是抽象类: 1,面向对象中的抽象(其实就是分类)概念: 1,在进行面向对象分析时 ...

  2. Java 中,抽象类与接口之间有什么不同?

    Java 中,抽象类和接口有很多不同之处,但是最重要的一个是 Java 中限制一个 类只能继承一个类,但是可以实现多个接口.抽象类可以很好的定义一个家族类 的默认行为,而接口能更好的定义类型,有助于后 ...

  3. java中的抽象类和接口

    抽象类和接口本身让面向对象真正实现,一个好的系统可以让抽象类或者接口实现多次复用,如果出现了集成具体类那么肯定是有问题的. 抽象类和接口很相似,很多时候好像功能可以混用,java设计者赋予了很多不一样 ...

  4. PHP中的抽象类和接口

    PHP抽象类和抽象方法的应用 抽象类 接口 多态 抽象类是以特殊的类,接口是一种特殊的抽象类声明抽象类和接口,以及一些需要的技术抽象类:    什么是抽象方法?        定义:如果一个类中的方法 ...

  5. JAVA中的抽象类与接口

    抽象类 abstract class 包含抽象方法的类,叫抽象类.而抽象的概念就是抽象出共同属性:成员变量和方法.所以抽象类可以有private等多种权限的成员变量和非abstract的成员方法.当然 ...

  6. 论Java中的抽象类与接口

    目录 抽象类和抽象方法 定义 与普通类的区别以及注意点: 抽象类的作用 接口 定义 示例 注意 作用 最后:接口与抽象类的异同 使用场景 借鉴 抽象类和抽象方法 定义 抽象方法和抽象类都必须被abst ...

  7. Java 8 中的抽象类和接口到底有啥区别?

    上一篇栈长发了这篇<Java 8 有多牛逼?打破一切你对接口的认知!>,帮助许多人解开了疑惑,还有读者留言说两者还有啥区别,故引发了此篇: 在我们面试时也会经常遇到面试官问抽象类和接口的区 ...

  8. Java 中的抽象类及接口

    抽象类使用 abstract 关键字修饰,该类即为抽象类. 抽象类的作用: 1.某些情况下,父类约束子类必须包含哪些方法,但不知道子类如何去实现这些方法. 2.可以从多个具有相同特征的类中抽象出一个抽 ...

  9. PHP中的抽象类与接口

    抽象类 php5支持抽象类和抽象方法.类前加 abstract, 此类就成为抽象类,无法被实例化,此类天生就是用来被继承的,给子类提供了一个类的模板; 类方法前加 abstract,是抽象方法,抽象方 ...

随机推荐

  1. Java字符串格式化String.format常用用法

    常规的格式化 String类的format()方法用于创建格式化的字符串以及连接多个字符串对象.熟悉C语言的同学应该记得C语言的sprintf()方法,两者有类似之处.format()方法有两种重载形 ...

  2. java微信开发(wechat4j)——发送客服消息

    微信支持主动发送客服消息.如果你要实现此功能,需要使用CustomerMsg类. 获得access_token access_token请求之后有一个过期时间,微信平台建议你使用一个中控服务器来定时刷 ...

  3. 个人收集整理的5Ucms标签

    {field:cid} 当前栏目id {field:id}  当前页面id {field:content} 当前页面内容 [List:Modifytime $format=yy-mm-dd] 文章发布 ...

  4. SilverLight MD5加密

    效果体验:http://keleyi.com/tool/md5.htm 嵌入页面的代码: <div style="width:400px;height:230px"> ...

  5. HTML5&CSS3经典动态表单-2

    上一个demo效果没出来!实际如下 代码没问题.不知道为啥,展示的demo里光标获取焦点的时候不会有如下效果

  6. ABAP SY-SUBRC 使用过程中返回值的几种含义

    当进行Debug的时候,经常会遇到"SY-SUBRC"的返回值.具体如何使用.在各种语句下返回值. ================= FUNCTION MODULE (或RFC中 ...

  7. dom4j创建xml

    在前边介绍SAX,PULL等等既然能解析,当然也能生成.不过这里介绍dom4j创建xml文件,简单易懂. dom4j是独立的api,官网:http://www.dom4j.org/    可以去这下载 ...

  8. OC中的复合

    #import <Foundation/Foundation.h> #import "Car.h" int main(int argc, const char * ar ...

  9. Eclipse下快速打开本地文件的插件easy explore

    插件下载地址:http://jianguoyun.com/p/DeNpa8IQx5jkBRjKlAk 放到eclipse的plugin目录下后,eclipse 3.5+可以放到dropins目录下,重 ...

  10. virtualbox 中ubantu虚拟机范文win7文件夹

    宿主机操作系统: windows7_x64 旗舰版 Oracle VM virtualBox版本:5.0.12 虚拟机操作系统: Ubantu15.12_x64 Desktop版本   让虚拟机可以访 ...