hwaityd的小窝

Loading...
随笔 - 26,  文章 - 0,  评论 - 0,  阅读 - 461

封装(Encapsulation)

封装是面向对象编程的核心概念之一,它允许将数据(属性)和操作这些数据的方法(行为)捆绑在一起,同时限制对数据的直接访问。

1. 类与对象

  • 概念:类是对象的蓝图或模板,定义了对象的属性和行为。对象是根据类创建的实例,每个对象拥有自己的数据和行为。
  • 语法
    class ClassName {
    public:
    // 公共成员
    private:
    // 私有成员
    };
    ClassName objectName; // 创建对象
  • 特点:类提供了一种将数据和行为封装在一起的方式,而对象则是类的具体实例。

示例代码

class Car {
public:
void drive() {
std::cout << "Car is driving" << std::endl;
}
private:
int speed;
};
Car myCar; // 创建Car类的对象
myCar.drive(); // 调用对象的行为

2. 类的语法体系

  • 概念:类的语法体系包括类的声明、成员函数的定义、构造函数、析构函数、以及类的成员变量和成员函数的访问修饰符。
  • 语法
    class ClassName {
    public:
    ClassName(); // 默认构造函数
    ~ClassName(); // 析构函数
    void memberFunction(); // 成员函数
    int memberVariable; // 成员变量
    private:
    int anotherMemberVariable; // 私有成员变量
    };
  • 特点:类的语法体系提供了一种结构化的方式来组织代码,使其更加模块化和易于管理。

3. 抽象的过程

  • 概念:抽象是简化复杂现实的机制,它隐藏了不必要的细节,只展示了必要的信息。
  • 语法:通过使用访问修饰符(如private)来隐藏类的内部实现细节。
  • 特点:抽象使得用户只需要关注对象的接口,而不需要了解其内部工作原理。

示例代码

class Clock {
private:
int hour;
int minute;
public:
void setTime(int h, int m) {
hour = h;
minute = m;
}
void getTime() const {
std::cout << "Hour: " << hour << ", Minute: " << minute << std::endl;
}
};
Clock myClock;
myClock.setTime(10, 30);
myClock.getTime();

4. 封装过程

  • 概念:封装过程涉及将相关的数据和操作这些数据的方法组合在一起,并使用访问控制来保护数据。
  • 语法:通过将数据成员声明为private,将行为成员声明为public
  • 特点:封装提高了数据的安全性,防止了外部代码直接访问和修改内部数据。

5. 访问权限

  • 概念:访问权限控制了不同类成员的可见性和可访问性。
  • 语法
    • public:类的公共成员可以被任何对象访问。
    • private:类的私有成员只能被类的成员函数和友元函数访问。
    • protected:受保护的成员可以被类的对象、继承的子类及其友元访问。
  • 特点:通过控制访问权限,封装确保了对象的完整性和数据的安全性。

示例代码

class Account {
private:
double balance; // 私有成员变量
public:
Account(double initialBalance) : balance(initialBalance) {} // 构造函数
void deposit(double amount) {
if (amount > 0) {
balance += amount;
}
}
double getBalance() const {
return balance; // 公有成员函数提供访问控制
}
};
Account account(1000);
// account.balance = 500; // 错误:balance是私有成员
account.deposit(200);
std::cout << "Balance: " << account.getBalance() << std::endl;

封装是面向对象编程的基础,它有助于将实现细节隐藏起来,只暴露出必要的接口,从而提高代码的可维护性和重用性。

posted on   hwaityd  阅读(11)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示