C++提高之类和对象(封装,继承,多态)

 C++面向对象的三大特性:封装、继承、多态

在C++中万事万物都可以多为对象,小到蚂蚁,大到地球,宇宙等,对象上有其属性和行为。

举一个简单的例子:人

人可以作为对象,属性有姓名、年龄、身高等,行为有走、跳、跑等。

下面是关于C++对象的一些重要概念和特性:

  1. 类(Class):类是对象的模板或蓝图,描述了对象的属性和行为。它定义了对象的结构和行为的集合。

  2. 对象(Object):对象是类的一个实例,具体化了类的属性和行为。每个对象都有自己的状态和行为。

  3. 数据成员(Data Members):数据成员是类中用于存储对象状态的变量。它们可以是各种数据类型,如整数、浮点数、字符、指针等。

  4. 成员函数(Member Functions):成员函数是类中定义的函数,用于操作对象的数据成员和实现对象的行为。它们可以访问和修改对象的数据成员。

  5. 封装(Encapsulation):封装是面向对象编程的一个原则,它将数据和操作数据的函数封装在一个类中。通过封装,对象的内部细节对外部是隐藏的,只有类的成员函数可以访问和修改对象的数据。

  6. 继承(Inheritance):继承是一种机制,允许一个类派生出另一个类,从而共享基类的属性和行为。派生类可以扩展或修改基类的功能。

  7. 多态(Polymorphism):多态是指同一操作可以在不同的对象上产生不同的行为。它允许使用基类的指针或引用来调用派生类的成员函数,实现了代码的灵活性和可扩展性。

1、封装

1.1  封装的意义

封装的意义:

在C++中,封装是面向对象编程的核心概念之一,具有以下几个重要的意义:

  1. 数据隐藏:C++中的封装可以将数据成员隐藏在类的私有部分,只允许通过公有成员函数来访问和修改数据。这样可以防止外部代码直接访问和修改对象的内部数据,提高了数据的安全性和完整性。

  2. 实现细节隐藏:封装不仅隐藏了数据成员,还可以隐藏类的实现细节。外部代码只需要关注类的公有接口,而不需要了解类的内部实现细节。这样可以降低代码的耦合性,提高代码的可维护性和可扩展性。

  3. 接口定义:封装通过公有成员函数定义了类的接口,即类对外提供的操作和行为。外部代码只需要了解如何使用这些接口来与对象进行交互,而不需要了解对象的内部实现。这样可以简化外部代码的编写,并且在类的内部可以自由修改实现细节而不影响外部代码。

  4. 代码组织和模块化:封装将相关的数据和函数组织在一个类中,形成一个独立的模块。这样可以将复杂的程序分解为多个小模块,每个模块负责特定的功能。这种模块化的设计使得代码更易于理解、维护和扩展。

  5. 信息隐藏:封装可以隐藏对象的内部状态和实现细节,只暴露必要的信息给外部。这样可以降低外部代码对内部结构的依赖,减少代码之间的耦合性。当类的内部实现发生变化时,只需要调整类的接口而不影响外部代码。

简单的来讲就是:

将属性和行为作为一个整体,表现生活中的事物

将属性和行为加以权限控制

1.1.1  将属性和行为作为一个整体,表现生活中的事物

        在封装前,我们要先创建一个类。

类的定义通常包括以下几个部分:

(1)类声明:在类声明中,使用关键字 class 或 struct 定义类的名称,并指定类的访问权限(默认为私有)。类声明中可以包含数据成员和成员函数的声明,但不包含具体的实现。

(2)数据成员:类中的数据成员是类的属性,用于存储对象的状态信息。数据成员可以是各种类型的变量,包括基本数据类型(如整数、浮点数)和其他类的对象。

(3)成员函数:类中的成员函数是类的行为,用于操作和访问类的数据成员。成员函数可以在类内部定义,也可以在类外部定义。类的成员函数可以访问类的私有数据成员,并提供对外的接口来操作数据。

注意:

类中的属性和行为,我们统称为成员

属性又叫:成员属性,成员方法

行为又叫:成员函数,成员方法

(4)构造函数和析构函数:构造函数用于创建对象时初始化对象的数据成员,而析构函数用于在对象销毁时清理资源。构造函数和析构函数的名称与类的名称相同,没有返回类型。

(5)访问控制修饰符:C++中的类可以使用访问控制修饰符来控制成员的访问权限。常用的访问控制修饰符有 publicprivate 和 protectedpublic 成员可以被类的外部代码访问,private 成员只能在类的内部访问,protected 成员可以在派生类中访问。

语法:class  类名{  访问权限: 属性 / 行为 };

//类设计
class yuan
{
	//访问权限
	//公共权限
public:

	//属性
	//半径
	int m_r;

	//行为
	//周长
	double ZC()
	{
		return 2 * π * m_r;
	}
};

案例一:设计一个圆类,求圆的周长

代码示例:

#include<iostream>
using namespace std;

//圆周率
const double π = 3.14;

//设计一个圆类,求圆的周长
//圆求周长的公式
//2*π*半径

//类设计
class yuan
{
	//访问权限
	//公共权限
public:

	//属性
	//半径
	int m_r;

	//行为
	//周长
	double ZC()
	{
		return 2 * π * m_r;
	}
};

int main()
{
	//通过圆类,创建具体的圆(对象)
	yuan c1;
	//给圆的对象的属性进行赋值操作
	c1.m_r = 10;

	co
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

时光の尘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值