Day 13 C++ 封装

目录

什么是封装

封装的意义

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

2.对属性和行为进行权限控制

如何封装

封装语法

封装的基本步骤

定义类

声明成员变量

声明成员函数

实现成员函数

使用封装的类

示例

struct和class区别

默认成员访问权限

继承方式


什么是封装

 在C++中,封装是一种面向对象编程的核心概念,也是C++面向对象三大特性之一通过使用类和访问控制修饰符来实现数据和方法的封装。

封装的意义

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

封装将一个对象的属性(数据成员)和行为(成员函数)组合成一个整体,以表示现实生活中的事物。对象的属性描述了该对象的状态和特征,而对象的行为描述了对该对象的操作和功能。通过封装,属性和行为被组织在一个独立的单元(类)中,形成了一个完整的抽象实体,从而更好地模拟和描述现实世界的事物。

2.对属性和行为进行权限控制

封装还提供权限控制,也称为访问控制。通过使用访问修饰符(如private、protected、public),可以对对象的属性和行为进行权限控制。

  • private:私有权限,只有在类的内部才能访问和修改。私有属性和行为对于外部代码是不可见的,只能通过公共接口(公共成员函数)来间接访问和修改。
  • protected:受保护权限,可以在类的内部和派生类中访问和修改。受保护属性和行为对于外部代码也是不可见的,但可以在继承关系中被派生类访问。
  • public:公共权限,可以在类的内部和外部代码中访问和修改。公共属性和行为对于外部代码是可见的,并且可以直接访问和修改。

通过权限控制,我们可以限制对对象的访问范围,确保对象的数据封装性和安全性。私有属性只能通过公共接口进行访问,这样可以在接口中添加逻辑验证和约束。另外,通过限制访问权限,还可以隐藏对象的内部实现细节,提供更好的抽象接口给外部代码使用。

如何封装

在C++中,封装是通过定义类来实现的。

在设计类的时候,属性和行为写在一起,用于表现事物

封装语法

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

封装的基本步骤

定义类

使用class关键字定义一个类,并给它一个合适的名称。类应该代表一个概念、实体或对象,并具有相关的属性和行为。

声明成员变量

在类的内部声明需要封装的属性(成员变量)。这些成员变量可以是私有的(private)或受保护的(protected),以实现数据隐藏和访问控制。

声明成员函数

在类的内部声明需要封装的行为(成员函数)。这些成员函数用于访问和操作成员变量,以及提供对外的公共接口。(直接在内部写则无需声明)

实现成员函数

在类外部实现成员函数(类内部也可),即定义成员函数的具体功能和逻辑。可以根据需要访问和修改成员变量,实现对象的行为。

使用封装的类

在程序的其他地方实例化类对象,并通过公共接口访问和操作类的成员。外部代码只能通过公共接口来使用对象,无法直接访问私有成员。

通过以上步骤,我们可以将属性和行为封装在一个类中,并通过适当的访问修饰符控制对其的访问权限。这样可以实现数据的隐藏和保护,同时提供一致的公共接口供外部代码使用。

示例

class MyClass {
private:
    int myPrivateVariable;
protected:
    float myProtectedVariable;
public:
    void myPublicMethod();
};


void MyClass::myPublicMethod() {
    // 实现代码
}


int main() {
    MyClass obj;
    obj.myPublicMethod();   // 访问公共方法
    // obj.myPrivateVariable;  // 错误,无法访问私有成员
    return 0;
}

struct和class区别

默认成员访问权限

在结构体中,默认的成员访问权限是公有(public)(默认你写在public关键字下),也就是说结构体的成员变量和成员函数默认可以在任何地方被访问

在类中,默认的成员访问权限是私有(private)(默认你写在private关键字下),也就是说类的成员变量和成员函数默认只能在类内部访问,外部无法直接访问。

继承方式

在结构体中,默认的继承方式是公有继承(public inheritance),也就是说结构体可以通过继承来派生出子结构体,子结构体的成员的访问权限与父结构体相同

在类中,默认的继承方式是私有继承(private inheritance),也就是说类可以通过继承来派生出子类,但子类的成员的访问权限为私有,外部无法直接访问。

除了上述区别外,结构体和类在其他方面基本上是相同的。它们都可以具有成员变量、成员函数、构造函数、析构函数等,并且都可以使用访问修饰符来控制成员的访问权限。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值