C艹中的面向对象编程
面向对象程序的基本设计特点
抽象
抽象是指具体问题或者对象进行概括,抽出其公共性质并加以描述的过程。一般情况下抽象分为数据抽象和行为抽象,其中数据抽象是指一个对象区别于另一个对象的特征,行为抽象是指某类对象的共同特征。
封装
封装是指将抽象所得的数据和行为相结合,隐藏对象属性和实现细节仅对外提供公共访问方式的过程。
继承
继承是指通过代码复用在保持原有的类特性的基础上对子类进行具体说明的过程,通俗来讲继承就是精简重复代码的手段.
多态
多态是指一段程序能够处理多种类型对象的能力,函数重载就是实现多态的一种手段。在C++语言中多态可分为强制多态,重载多态,类型参数化多态和包含多态.
类
类是 C++ 语言支持面向对象思想的重要机制,是实现封装的基本单元。
- 类的定义
类一般由类名、数据成员、函数成员三部分组成,定义类的基本形式为:
1 | class 类的名称 |
其中 public、protected、private 表示访问控制属性,用于控制类成员的访问权限。特别的,没有分配控制属性的默认为 private 私有成员。
2.类的成员访问控制
使用 public 关键字声明的公有成员可在类外访问,即公有类型成员定义了外部接口。例如:
1 |
|
输出结果:
1 | area:9.3 |
使用rpotected关键字声明受保护的成员可在子类中访问。例如:
1 |
|
此程序可分为相互独立的三部分,一类是对父类area的定义,而是对superarea子类及子类函数的定义,三是主函数main(),对于area类中受保护的成员width可以通过子类进行访问。
输出结果:
1 | width:3.1 |
使用 private 关键字声明的私有成员只能被本类的成员函数访问。例如:
1 |
|
此程序可以分为相对独立的两个部分,一是 area 类及其公有成员函数的定义,二是主函数 main()。私有成员 width 只能先被类中成员函数访问,再通过相关的公共成员函数实现外部访问。若在类外部使用 area.width=3.2;
方式访问 area 类的私有成员 width,则会报错。
输出结果:
1 | length:3.1 |
对象
在C++语言里,对象是某类事物的实例。其声明格式为:
1 | 类名 对象名; |
例如声明area类的对象square:
1 | area square; |
访问对象的成员
定义了类及其成员对象后,则可访问对象的成员。访问数据成员的基本格式为:
1 | 对象名.成员名 |
例如访问area类的对象square的数据成员width:
1 | square.width = 3.2; |
访问函数成员得基本格式为:
1 | 对象名.函数名(参数列表) |
例如访问 area 类的对象 square 的函数成员 setwidth(double wid):
1 | square.setwidth(3.2); |
类的成员函数
1 | class 类名{ |
例如在 area 类中有成员函数 void setwidth(double wid);:
1 | class area{ |