C++ 中抽象与封装的区别

C++ 中抽象与封装的区别

抽象(Abstraction):

在面向对象编程中,抽象是获取信息的方法,该方法以简化的方式获取所需信息,仅提取所需的组件,而忽略那些被视为不重要的信息。抽象仅向用户显示必要的信息。它通过隐藏程序实现复杂性来降低程序的复杂性。
抽象的示例:

#include <iostream>
using namespace std;
 
class Summation {
private:
    // 私有变量
    int a, b, c;
public:
    void sum(int x, int y)
    {
        a = x;
        b = y;
        c = a + b;
        cout<<"这两个数字的和是:"<<c<<endl;
    }
};
int main()
{
    Summation s;
    s.sum(5, 4);
    return 0;
}  

输出:

这两个数字的和是:9

在这个示例中,我们可以看到通过使用类实现了抽象。类“Summation”持有私有成员a、b和c,这些成员仅可通过类的成员函数访问。

封装(Encapsulation):

封装是包含信息的过程。封装是一种将数据隐藏在单个实体或单元内的方法,并提供一种保护信息免受外界干扰的方法。该方法将数据和函数封装在一个类中,从而实现数据抽象。

封装的示例:

#include <iostream>
using namespace std;
 
class EncapsulationExample {
private:
    // 我们将 a 声明为私有变量,以免其被外界访问
    int a;
 
public:
    // set() 函数用于设置 a 的值
    void set(int x)
    {
        a = x;
    }
 
    // get() 函数用于返回 a 的值
    int get()
    {
        return a;
    }
};
 
// 主函数
int main()
{
    EncapsulationExample e1;
 
    e1.set(10);
 
    cout<<e1.get();
    return 0;
}  

输出:

10

在这个程序中,变量 a 被设置为私有变量,因此只能使用类中存在的 get() 和 set() 方法访问和操作变量 a。因此,我们可以说,变量 a 和方法 set()、get() 已经绑定在一起,这就是封装。
抽象和封装的区别:

序号 抽象化 封装
1. 抽象化是获取信息的过程或方法。 而封装是包含信息的过程或方法。
2. 在抽象化中,问题是在设计或接口层面解决的。 而在封装中,问题是在实现层面解决的。
3. 抽象化是隐藏不需要的信息的方法。 而封装是一种隐藏数据在单个实体或单元中并保护信息不受外界侵犯的方法。
4. 我们可以使用抽象类和接口来实现抽象化。 而封装可以通过访问修饰符(即 private、protected 和 public)实现。
5. 在抽象化中,使用抽象类和接口来隐藏实现的复杂性。 而在封装中,使用 getter 和 setter 方法来隐藏数据。
6. 帮助执行抽象化的对象被封装。 而导致封装的对象不需要被抽象化。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程