抽象:
在 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 等的准备工作,请参阅完整的面试准备课程。