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

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

1. 抽象:

在面向对象编程中,抽象是获取信息的方法,所需的信息将以最简单的方式获取,即只提取所需的组件,而那些被认为不太重要的组件也不会被注意到。抽象的概念只向用户显示必要的信息。它通过隐藏程序的实现复杂性来降低程序的复杂性。

抽象的例子:

#include <iostream>
using namespace std;

class YiibaiCom {
private:
    // private variables
    int a, b, c;
public:
    void sum(int x, int y)
    {
        a = x;
        b = y;
        c = a + b;
        cout<<"Sum of the two number is : "<<c<<endl;
    }
};
int main()
{
    YiibaiDemo s;
    s.sum(5, 4);
    return 0;
}

运行结果:

Sum of the two number is: 9

在这个例子中,可以看到抽象是通过使用类来实现的。 Yiibai.Com 类包含私有成员 abc ,它们只能由该类的成员函数访问。

2. 封装:

封装是包含信息的过程或方法。封装是一种将数据隐藏在单个实体或单元中的方法,以及一种保护信息免受外界影响的方法。该方法将数据和函数一起封装在一个类中,这也导致了数据抽象。

封装示例:

#include <iostream>
using namespace std;

class EncapsulationExample {
private:
    // we declare a as private to hide it from outside
    int a;

public:
    // set() function to set the value of a
    void set(int x)
    {
        a = x;
    }

    // get() function to return the value of a
    int get()
    {
        return a;
    }
};

// main function
int main()
{
    EncapsulationExample e1;

    e1.set(10);

    cout<<e1.get();
    return 0;
}

运行结果:

10

在这个程序中,变量 a 被设为私有,因此只能使用类中存在的方法 get()set() 来访问和操作该变量。因此可以说,变量 a 和方法 set() 以及 get() 已经绑定在一起了,只不过是封装而已。

抽象与封装的区别:

编号 抽象 封装
1 抽象是获取信息的过程或方法。 封装是包含信息的过程或方法。
2 在抽象中,问题在设计或接口级别得到解决。 在封装中,问题在实现层面得到解决。
3 抽象是隐藏不需要的信息的方法。 封装是一种将数据隐藏在单个实体或单元中的方法,以及一种保护信息免受外部影响的方法。
4 可以使用抽象类和接口来实现抽象。 封装可以通过访问修饰符来实现,即私有、受保护和公共。
5 在抽象中,使用抽象类和接口隐藏了实现的复杂性。 在封装中,使用 gettersetter 方法隐藏数据。
6 封装有助于执行抽象的对象。 导致封装的对象不需要被抽象。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程