第52课 C++中的抽象类和接口
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++中的抽象类和接口的更多相关文章
- C++中的抽象类和接口
1,在 C++ 语言中,并不直接支持面向对象中的抽象类和接口概念,但是 C++ 语言 却可以间接实现这些概念: 2,什么是抽象类: 1,面向对象中的抽象(其实就是分类)概念: 1,在进行面向对象分析时 ...
- Java 中,抽象类与接口之间有什么不同?
Java 中,抽象类和接口有很多不同之处,但是最重要的一个是 Java 中限制一个 类只能继承一个类,但是可以实现多个接口.抽象类可以很好的定义一个家族类 的默认行为,而接口能更好的定义类型,有助于后 ...
- java中的抽象类和接口
抽象类和接口本身让面向对象真正实现,一个好的系统可以让抽象类或者接口实现多次复用,如果出现了集成具体类那么肯定是有问题的. 抽象类和接口很相似,很多时候好像功能可以混用,java设计者赋予了很多不一样 ...
- PHP中的抽象类和接口
PHP抽象类和抽象方法的应用 抽象类 接口 多态 抽象类是以特殊的类,接口是一种特殊的抽象类声明抽象类和接口,以及一些需要的技术抽象类: 什么是抽象方法? 定义:如果一个类中的方法 ...
- JAVA中的抽象类与接口
抽象类 abstract class 包含抽象方法的类,叫抽象类.而抽象的概念就是抽象出共同属性:成员变量和方法.所以抽象类可以有private等多种权限的成员变量和非abstract的成员方法.当然 ...
- 论Java中的抽象类与接口
目录 抽象类和抽象方法 定义 与普通类的区别以及注意点: 抽象类的作用 接口 定义 示例 注意 作用 最后:接口与抽象类的异同 使用场景 借鉴 抽象类和抽象方法 定义 抽象方法和抽象类都必须被abst ...
- Java 8 中的抽象类和接口到底有啥区别?
上一篇栈长发了这篇<Java 8 有多牛逼?打破一切你对接口的认知!>,帮助许多人解开了疑惑,还有读者留言说两者还有啥区别,故引发了此篇: 在我们面试时也会经常遇到面试官问抽象类和接口的区 ...
- Java 中的抽象类及接口
抽象类使用 abstract 关键字修饰,该类即为抽象类. 抽象类的作用: 1.某些情况下,父类约束子类必须包含哪些方法,但不知道子类如何去实现这些方法. 2.可以从多个具有相同特征的类中抽象出一个抽 ...
- PHP中的抽象类与接口
抽象类 php5支持抽象类和抽象方法.类前加 abstract, 此类就成为抽象类,无法被实例化,此类天生就是用来被继承的,给子类提供了一个类的模板; 类方法前加 abstract,是抽象方法,抽象方 ...
随机推荐
- CentOS安装Erlang
1.首先要安装编译源码用的编译器gcc&g++,安装方式很简单,先用yum search gcc搜索出包,然后选择适合自己的版本复制全名,用yum intall gcc_XXX来进行安装即可. ...
- JS创建对象、继承原型、ES6中class继承
面向对象编程:java中对象的两个基本概念:1.类:类是对象的模板,比如说Leader 这个是泛称领导,并不特指谁.2:实例:实例是根据类创建的对象,根据类Leader可以创建出很多实例:liyi,y ...
- C# 线程基础
1. 线程的基本概念 简单的讲进程就是程序分配在内存当中,等待处理器进行处理,请记住线程会消耗大量的操作系统资源.多个线程共享一个物理处理器将导致处理器忙于处理管理这些进程,而无法运行程序. 使用线程 ...
- sharepoint 顺序工作流创建
顺序工作流提供了一系列有组织的步骤,一般情况下,步骤是逐一执行的. 1.新建 > 项目,选择 SharePoint解决方案 > 空项目: 2.部署为场解决方案 3.添加 > 新项,选 ...
- [leetcode] Reverse Bits
Reverse Bits Reverse bits of a given 32 bits unsigned integer. For example, given input 43261596 (re ...
- Android环境的搭建
一.Java环境的配置(以JDK1.7为例) 在环境变量下查看,查看是否存在JAVA_HOME,没有的话新建一个 JAVA_HOME:java安装目录下jdk的安装目录 Path:jdk目录下面的bi ...
- HTML5 -1- 简介
在介绍HTML5之前我们应该先了解一下HTML5 我想从下面开始简单了解一下HTML5 什么是HTML5??? HTML5 即HTML 5.0 版本 正式制定时间是在2014年 遵循着移动先行(前四个 ...
- 【原】兼容IOS6以及旧版本的旋转处理方法,心得总结
最近的项目需要频繁处理屏幕的旋转以及各控件的自适应坐标.IOS6出来之后,屏幕旋转的处理方法变得复杂很多.在查阅了很多资料以及动手测试之后,得出以下几点精简的体会: 对于IOS6.0以上版本: 1.如 ...
- 初识 TextKit
iOS 7 的发布给开发者的案头带来了很多新工具.其中一个就是 TextKit.TextKit 由许多新的 UIKit 类组成,顾名思义,这些类就是用来处理文本的.在这里,我们将介绍 TextKit ...
- iOS背景模糊效果3中方法总结
1.首先得把界面转化成图片,给uiview加一个类目如下: #import "UIView+Screen.h" @implementation UIView (Screen) // ...