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

📅  最后修改于: 2021-09-12 10:53:55             🧑  作者: Mango

抽象:
在 OOP 中,抽象是获取信息的方法。所需的信息将以最简单的方式获取,即只提取所需的组件,而那些被认为不太重要的组件也不会被注意到。或者不重要的信息将被耗尽,只保留敏感信息完整无缺。在这种情况下,大部分类都没有任何形式的实现,大部分解决问题的方法都是在接口阶段完成的。一个不存在且只是一个概念的东西被命名为抽象。在抽象中,使用抽象类和接口隐藏了实现的复杂性。

抽象示例:

#include 
using namespace std;
  
class Summation {
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 : "<

输出:

Sum of the two number is: 9 

在这个例子中,我们可以看到使用类实现了抽象。 “Summation”类包含私有成员 a、b 和 c,它们只能由该类的成员函数访问。

封装:
封装是包含信息的过程或方法。它提供的信息是,唯一关键的数据和不合适的相反数据都已隐藏。在本案中,事项认定已在实施阶段完成。封装是一种将数据隐藏在单个实体或单元中的方法,以及一种保护信息不受外部影响的方法。封装将某些东西保存在一个非常胶囊中,并仅显示产品的基本选项。例如,一旦有人被滥用软件包,他们就无法识别秘密写入是什么,他们仅使用由文件中不间断安全的秘密写入产生的强制功能。

封装示例:

#include 
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<

输出:

10

在这个程序中,变量 a 是私有的,这样这个变量只能通过使用类中存在的方法 get() 和 set() 来访问和操作。因此我们可以说,变量 a 和方法 set() 以及 get() 绑定在一起,只不过是封装。

抽象和封装的区别:

S.NO Abstraction Encapsulation
1. Abstraction is the process or method of gaining the information. While encapsulation is the process or method to contain the information.
2. In abstraction, problems are solved at the design or interface level. While in encapsulation, problems are solved at the implementation level.
3. Abstraction is the method of hiding the unwanted information. Whereas encapsulation is a method to hide the data in a single entity or unit along with a method to protect information from outside.
4. We can implement abstraction using abstract class and interfaces. Whereas encapsulation can be implemented using by access modifier i.e. private, protected and public.
5. In abstraction, implementation complexities are hidden using abstract classes and interfaces. While in encapsulation, the data is hidden using methods of getters and setters.
6. The objects that help to perform abstraction are encapsulated. Whereas the objects that result in encapsulation need not be abstracted.

想要从精选的视频和练习题中学习,请查看C++ 基础课程,从基础到高级 C++ 和C++ STL 课程,了解基础加 STL。要完成从学习语言到 DS Algo 等的准备工作,请参阅完整的面试准备课程