一、概述
在我们平时的工作和学习中,经常会碰到各种语言,其中有面向对象,也有面向过程的。殊不知我们很多面向对象的语言思想,都源于C++,那么今天就简单介绍一下C++的基本特性:继承、多态、封装;
特性 | 目的 |
继承 | 实现代码扩展,避免代码重写 |
多态 | 精简代码,增加程序的可扩展性 |
封装 | 实现代码模块化,增加代码的安全性 |
二、继承
1、定义:继承(inheritance)机制是面向对象程序设计中使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能。这样产生的新类,称派生类(或子类),被继承的类称基类(或父类)。继承就是基(父)类被派生(子)类继承。派生类继承基类的所有公共和保护成员数据(属性)和成员函数(方法)。派生类可以重新定义基类某些属性,重写基类的某些方法,即覆盖基类的某些属性和方法。使其获得与基类不同的功能。
2、优缺点:
优点 | 缺点 |
减少重复代码,增加复用性 | 继承在编译时刻就定义了,无法时刻改变父类的继承实现 |
让类与类之间产生关系,是多态的前提 | 父类至少定义了子类的部分行为,父类改变可能影响子类的行为 |
增加了类与类之间的耦合性 | 如果继承下来的子类不适合解决新问题,必须重写或替换父类,这种依赖关系限制了灵活性 |
三、多态
1、 定义:一个接口多种实现状态。具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态。比如,在买票这一行为,普通人买票是全价买票,学生买票是半价买票,而军人买票是优先买票;再比如动物园的动物叫这个行为,不同的动物叫声是不一样的。这些都是生活中多态的例子。
2、分类:
静态多态 | 动态多态 |
静态多态是指在编译时实现的多态,比如说函数重载 | 动态也就是我们常说的多态,动态多态是在运行中实现的。根据父类的指针或引用接收不同对象,来确定自己会调用哪个类的虚函数 |
3、多态的体现:父类引用或指针指向子类对象。父类的引用或指针可以接受子类对象。
4、多态的前提:必须存在父类与子类的继承关系。父类中必须有虚函数。子类必须重写父类的虚函数。父类引用或指针指向子类对象。
5、多态的弊端:易读性不好,调试困难。模板只能定义在.h文件中,当工程大了后编译耗时。
四、封装
1、定义:封装就是将数据和行为(或功能)有机结合起来,形成一个整体。把数据和处理数据的操作结合形成类,数据和函数都是类的成员。增强安全性和简化编程。对外隐藏实现细节暴露公共接口。外部通过接口来调用。
2、类的访问类型:
类型 | 介绍 |
私有成员(private) | 只有此类的成员函数才能访问 |
保护成员(protected) | 类和派生类的成员函数都能访问,但类外不阔以访问 |
公有成员(public) | 可以在类外访问 |
2、优缺点:
优点 | 缺点 |
隔离变化 | 封装太多 |
提高复用性 | 影响运行效率 |
提高安全性 | 使用者不知道代码的具体实现 |