第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,是抽象方法,抽象方 ...
随机推荐
- 优雅输出Javascript从Chrome浏览器
一般前端Web开发好的App中js脚本文件,为了节约流量,都会做最小化,甚至合并压缩处理.但在对于需要Debug已处理过Javascript文件就不太方便了,可读性太差了. 使用Goo ...
- 3kb jQuery代码搞定各种树形选择。
自制Jquery树形选择插件. 对付各种树形选择(省市,分类..)90行Jquery代码搞定,少说废话直接上插件代码.稍后介绍使用说明.是之前写的一个插件的精简版. 1.Jquery插件代码 /* * ...
- playframework文档未提及,但你能做的事
这里记录一些play!框架的文档未提及,但是可以做的一些事playframe版本1.1 1.application.conf文件可以拆分可以把application.conf文件拆成多个,需要在app ...
- 【JavaEE】SSH+Spring Security自定义Security的部分处理策略
本文建立在 SSH与Spring Security整合 一文的基础上,从这篇文章的example上做修改,或者从 配置了AOP 的example上做修改皆可.这里主要补充我在实际使用Spring Se ...
- JS中检测数据类型的几种方式及优缺点
1.typeof 用来检测数据类型的运算符 typeof value 返回值首先是一个字符串,其次里面包含了对应的数据类型,例如:"number"."string&quo ...
- vh属性-- 一个永远垂直居中的弹出框
下面的demo,无论浏览器大小如何改变,滚动条是否滚动,弹出框永远水平垂直居中 <html> <head> <title></title> </h ...
- iOS--APP 登录界面图(xuer)
ViewController.h #import "ViewController.h" @interface ViewController () @property(strong, ...
- 【转】self.myOutlet=nil、viewDidUnload、dealloc的本质剖析
对于iphone开发人员来说,内存管理是极为重要的技巧,哪怕程序的功能再强大,设计再漂亮,如果内存控制不好,也难逃程序莫名退出的噩运,这与网页开发是完全不同的. 内存控制里面有很多门道,在这里分析一下 ...
- APP国际化
1.app本地内容国际化 ①在项目中新建一个New File ---> iOS Resource -> String File ---> 命名为Localizable(之所以命名为L ...
- Python 虚拟环境:Virtualenv
安装sudo yum install python-virtualenv 使用方法 virtualenv [虚拟环境名称] 如,创建**ENV**的虚拟环境 virtualenv ENV 默认情况下, ...