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. Javascript中void操作符

    Javascript中void是一个操作符,该操作符指定要计算一个表达式但是不返回值. void操作符用法格式如下:1.javascript:void (expression)2.javascript ...

  2. java获取class所在jar

    在类库的开发过程中,有些时候为了self-contain的原因,我们希望所有的资源都打包在jar中,但是有些工具好像无法支持从classpasth直接获取比如velocity的模板合并,此时我们就知道 ...

  3. mysql max_allowed_packet过小导致的prepare失败

    最近公司一台阿里云上模拟环境突然好好地就出错了额,总提示:"Unknown prepared statement handler (stmt) given to DEALLOCATE PRE ...

  4. eclipse easyexplorer openexplorer

    电脑重装了.. eclipse换成了4.4.2,发现原来的easyexplorer不生效了(原来是4.2),搜了下,换成了open explorer即可. 方式一样,都是丢到eclipse/plugi ...

  5. linux多线程-互斥&条件变量与同步

    多线程代码问题描述 我们都知道,进程是操作系统对运行程序资源分配的基本单位,而线程是程序逻辑,调用的基本单位.在多线程的程序中,多个线程共享临界区资源,那么就会有问题: 比如 #include < ...

  6. html-制作导航菜单

    导航菜单nav: 1.使用列表标签<ul> 2.使用浮动布局float 3.使用超链接标签<a>:要使用<a>标签的margin外边距,需要让<a>标签 ...

  7. oGrid 初探

    oGrid 是个还蛮有趣的 pure JavaScript grid 控件 code 并不多而且是纯 JavaScript 写成,一条小龙觉得还算蛮好理解,不像其他几乎都是用 Jquery 为 bas ...

  8. 【JavaEE】SSH+Spring Security自定义Security的部分处理策略

    本文建立在 SSH与Spring Security整合 一文的基础上,从这篇文章的example上做修改,或者从 配置了AOP 的example上做修改皆可.这里主要补充我在实际使用Spring Se ...

  9. ECMAScript 6学习笔记(一):展开运算符

    同步发布于:https://mingjiezhang.github.io/(转载请说明此出处). JavaScript是ECMAScript的实现和扩展,ES6标准的制定也为JavaScript加入了 ...

  10. jQuery知识大杂汇

    1.jQuery 语法是通过选取 HTML 元素,并对选取的元素执行某些操作. 基础语法: $(selector).action() 举几枚栗子吧: $(this).hide() - 隐藏当前元素 $ ...