面向对象程序设计 第四章 类与对象

面向对象程序设计 第四章 类与对象

 

一、面向对象的基本特点

1.  抽象

  • 对同一类对象的共同属性和行为进行概括,形成类。
  • 先注意问题的本质及描述,其次是实现过程或细节。
  • 数据抽象:描述某类对象的属性或状态(对象相互区别的物理量)。
  • 代码抽象:描述某类对象的共有的行为特征或具有的功能。
  • 抽象的实现:类。
  • 抽象实例——钟表

数据抽象:

int hour,int minute,int second

代码抽象:

setTime(),showTime()

 

复制代码
class Clock {

 public:

  void setTime(int newH, int newM, int newS);

  void showTime();

 private:

  int hour, minute, second;

};
复制代码

 

  1. 对象是现实中对象在程序中的模拟
  2. 类是同一类对象的抽象,对象是类的某一特定实体
  3. 定义类的对象,才可以通过对象使用类中定义的功能

2.封装

  • 将抽象出的数据、代码封装在一起,形成类。
  • 目的:增强安全性和简化编程,使用者不必了解具体的实现细节,而只需要通过外部接口,以特定的访问权限,来使用类的成员。
  • 实现封装:类声明中的{}
  •  例:
1
2
3
4
5
6
7
8
9
class Clock {
 
 public: void setTime(int newH, int newM, int newS);
 
           void showTime();
 
 private: int hour, minute, second;
 
};

  

 

 

3.继承

在已有类的基础上,进行扩展形成新的类。

详见第7章

4.多态

  • 多态:同一名称,不同的功能实现方式。
  • 目的:达到行为标识统一,减少程序中标识符的个数。
  • 实现:重载函数和虚函数——见第8章

二、类和对象

1.类定义的语法形式和访问控制

复制代码
class //类名称

{

pubilc:

                    //公有成员(外部接口),任何函数都可访问

private:

                  //私有成员,只允许本类中的函数访问

protected:

                 //保护型成员,详见第七章

}
复制代码

 

2.对象定义的语法

 类名 对象名;

 例:Clock myClock;

3.类成员的访问权限

 1.类中成员互相访问

 直接使用成员名访问

 2.类外访问

 使用“对象名.成员名”方式访问 public 属性的成员

 3.例4_1-1:钟表类

复制代码
 //类的定义

#include<iostream>

using namespace std;

class Clock {//对象名为Clock

public:

  void setTime(int newH=0, int newM=0, int newS=0);//外部接口,公有成员函数,有默认参数值

  void showTime();//成员名有两个,setTime和showTime

private://私有数据成员

  int hour,minute, second;

};

//Clock类成员函数的实现

void Clock::setTime(int newH,int newM,int newS){//注意类中的函数,要写::(类的作用域限定符)

hour=newH;

minute:newM;

second=newsS;

}

void Clock::showTime(){

cout<<hour<<":"<<minute<<":"<<second<<endl;

}

//对象的使用

int main(){

Clock myClock;//定义对象,myClock

myClock.setTime(8,30,30);//调用setime函数,值为8,30,30

myClock.showTime();//调用showtime,显示时间

return 0;

}
复制代码

 

运行结果为

8:30:30

4.类内初始值

  • 可以为数据成员提供一个类内初始值
  • 在创建对象时,类内初始值用于初始化数据成员
  • 没有初始值的成员将被默认初始化。
  • 类内初始值举例
复制代码
class Clock {

public:

  void setTime(int newH, int newM, int newS);

  void showTime();

private:

  int hour = 0, minute = 0, second = 0;//0即类内初始值

};
复制代码

 

5.类的成员函数语法

  • 在类中说明函数原型;
  • 可以在类外给出函数体实现,并在函数名前使用类名加以限定;
  • 也可以直接在类中给出函数体,形成内联成员函数;
  • 允许声明重载函数和带默认参数值的函数。
  • 在类中声明内联成员函数的方式:

1.将函数体放在类的声明中。

2.使用inline关键字。

posted @   DanRan02  阅读(73)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
点击右上角即可分享
微信分享提示