📜  C++中抽象与封装之间的区别

📅  最后修改于: 2021-05-30 16:45:14             🧑  作者: 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 

在此示例中,我们可以看到通过使用类已经实现了抽象。 “汇总”类包含私有成员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等的更多准备工作,请参阅“完整面试准备课程”