第九章类与对象

面向对象程序设计的基本特点

  • 以数据为中心,采用对象来描述内部属性和操作方法
  • 将数据和函数当作一个统一体,采用软件对象模拟客观世界中实际对象
  • 特征:抽象、封装、继承和多态性
  • 抽象是对具体对象进行概括,抽出这一类对象的公共性质并加以描述的过程
  • 数据抽象:描述某类对象的属性或状态(对象相互区别的物理量)
  • 行为抽象:描述某类对象的共有的行为特征或具有的功能
  • 抽象的实现:通过类的声明
封装
  • 将抽象出的数据和行为相结合,将它们视为一个整体,使用者不必了解具体的实现细节,而只需要通过外部接口,以特定的访问权限,来使用类的成员
  • 实现封装:类声明中的{}
继承
多态性
  • 多态:相同的语法结构(数据或操作)代表多种功能
  • 目的:达到行为标识统一,减少程序中标识符的个数
  • 实现:函数重载、运算符重载和虚函数

类概念和声明

类:具有相同类型数据和行为的对象集合
  • 将数据和函数当作一个统一体–类
  • 类是对客观世界万物的抽象描述
  • 结构体是复合数据的统一体

实体:指客观世界存在的某个事物

怎样描述实体:
  • 程序中通过对实体进行抽象来描述实体
  • 每个实体都有其特征和功能,特征(数据)和功能(行为)通称为属性
  • 实体与实体的不同在于属性的不同
  • 所谓抽象描述实体就是:从实体中抽取出若干数据和行为,来表示实体。数据指实体的静态属性,行为指实体的动态属性
类是一种用户自定义类型,声明形式:

在这里插入图片描述

公有类型成员
  • 关键词public
  • 外界能够直接访问该成员:
  • 一般函数成员被定义为公有成员
  • 通过调用共有函数成员实施规定的操作
  • 外界与类之间起着接口的作用
私有类型成员
  • 关键字private(类起始处默认为private)
  • 外界(类外)不能够直接访问该成员
  • 一般数据成员被定义为私有成员
  • 使得成员被封装隐藏起来,外界不能随便修改对象的私有数据成员
  • 只有通过类中公有函数对数据进行修改,达到数据的安全性
  • 允许本类中的函数访问
保护类型
  • 关键字protected
  • 外界部分区域能够访问该成员:
  • 数据或函数成员在类外被有限制的访问
  • 私有是对外界完全封闭,公有是完全开放,保护是介于两者之间
  • 允许本类中的函数访问
  • 与private类似,其差别表现在继承与派生时对派生类的影响不同
成员数据
  • 与一般的变量声明相同,但需要将它放在类的声明体中
  • 指明访问控制属性
成员函数
  • 在类中说明原型,可以在类外或类内给出函数体实现
  • 在类中给出函数体,则形成内联成员函数
  • 类外实现时须在函数名前使用类名加以限定
  • 成员函数在类外定义时,必须在函数名前面加上类名+"::",予以限定,"::"是作用域限定符
  • 允许声明重载函数和带默认形参值的函数
  • 加了类作用域后,类中的成员可以直接引用
内联成员函数
  • 为了提高运行时的效率,对于较简单的函数可以声明为内联形式
  • 内联函数体中不要有复杂结构(如循环语句和switch语句)
  • 在类中声明内联成员函数的方式:
  • 隐式:将函数体放在类的声明中
  • 显示:使用inline关键字

对象:是类的一个实例或个体或元素

什么是对象
  • 对象指被对象描述的某个实体
  • 一个对象包含了实体的数据和行为
  • 对象=实体的数据+实体的行为
  • 对象=数据+函数
  • 将数据和函数当作一个统一体
  • 类的对象是该类的某一特定实体,即类类型的变量
  • 类相当于类型,对象相当于该类的变量
  • 声明形式: 类名 对象名;
  • 对象所占内存只用于存放数据成员,函数成员占用公共空间。
类中成员的访问方式
  • 对象的引用类似于结构体
  • 类中成员互访:直接使用成员名
  • 类外访问:使用"对象名.成员名"方式访问public属性的成员 eg: myClock.showTime();
  • 可以对对象直接进行赋值: myClock = yourClock
引用对象应该注意:
  • 成员函数可直接访问同类中的数据成员
  • 对象访问其数据成员或成员函数需使用运算符
  • 禁止类外直接访问一个对象中的私有成员
  • 同类对象之间可以整体赋值
  • 对象用作函数的参数时属于赋值调用
  • 对象可以用作函数值类型,函数可以返回一个对象
  • 在这里插入图片描述

构造函数

  • 构造函数的作用是在对象被创建时使用特定的值构造对象,或者说将对象初始化为一个特定的状态
  • 在对象创建时由系统自动调用
  • 如果程序中未声明,则系统自动产生出一个默认形式的构造函数
  • 允许为内联函数、重载函数、带默认形参值的函数
  • 在这里插入图片描述
    在这里插入图片描述

析构函数

在这里插入图片描述

类的组合

  • 类中的成员数据是另一个类的对象
发布了42 篇原创文章 · 获赞 2 · 访问量 1034

猜你喜欢

转载自blog.csdn.net/soulmate______/article/details/104536097