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
类包含私有成员 a
、b
和 c
,它们只能由该类的成员函数访问。
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 | 在抽象中,使用抽象类和接口隐藏了实现的复杂性。 | 在封装中,使用 getter 和 setter 方法隐藏数据。 |
6 | 封装有助于执行抽象的对象。 | 导致封装的对象不需要被抽象。 |
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/264513.html