抽象:
在麵向對象編程中,抽象是一種獲取信息的方法,其中所需的信息將以最簡單的方式獲取,僅提取所需的組件,並且那些被認為不太重要的組件也不會被注意到。抽象的概念隻向用戶展示必要的信息。它通過隱藏程序的實現複雜度來降低程序的複雜度。
抽象的例子:
CPP
#include <iostream>
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 : "<<c<<endl;
}
};
int main()
{
Summation s;
s.sum(5, 4);
return 0;
}
輸出:
Sum of the two number is: 9
在這個例子中,我們可以看到抽象是通過類來實現的。 “Summation”類擁有私有成員 a、b 和 c,它們隻能由該類的成員函數訪問。
封裝:
封裝是包含信息的過程或方法。封裝是一種將數據隱藏在單個實體或單元中的方法,也是一種保護信息免受外界影響的方法。此方法將數據和函數一起封裝在一個類中,這也導致了數據抽象。
封裝示例:
CPP
#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()綁定在一起,隻是一種封裝。
抽象和封裝之間的區別:
S.NO | 抽象 | 封裝 |
---|---|---|
1. | 抽象是獲取信息的過程或方法。 | 而封裝是包含信息的過程或方法。 |
2. | 抽象地說,問題是在設計或接口級別解決的。 | 而在封裝中,問題是在實現層麵解決的。 |
3. | 抽象是隱藏不需要的信息的方法。 | 而封裝是將數據隱藏在單個實體或單元中的方法以及保護信息免受外部影響的方法。 |
4. | 我們可以使用抽象類和接口來實現抽象。 | 而封裝可以通過訪問修飾符來實現,即私有、受保護和公共。 |
5. | 在抽象中,使用抽象類和接口隱藏了實現的複雜性。 | 在封裝時,使用 getter 和 setter 方法隱藏數據。 |
6. | 有助於執行抽象的對象被封裝。 | 而導致封裝的對象不需要被抽象。 |
相關用法
- C++ Algorithm binary_search()用法及代碼示例
- C++ Algorithm equal_range()用法及代碼示例
- C++ Algorithm fill()用法及代碼示例
- C++ Algorithm fill_n()用法及代碼示例
- C++ Algorithm generate()用法及代碼示例
- C++ Algorithm generate_n()用法及代碼示例
- C++ Algorithm includes()用法及代碼示例
- C++ Algorithm inplace_merge()用法及代碼示例
- C++ Algorithm is_heap()用法及代碼示例
- C++ Algorithm is_heap_until()用法及代碼示例
- C++ Algorithm is_partitioned()用法及代碼示例
- C++ Algorithm is_sorted()用法及代碼示例
- C++ Algorithm is_sorted_until()用法及代碼示例
- C++ Algorithm iter_swap()用法及代碼示例
- C++ Algorithm lexicographical_compare()用法及代碼示例
- C++ Algorithm lower_bound()用法及代碼示例
- C++ Algorithm make_heap()用法及代碼示例
- C++ Algorithm max()用法及代碼示例
- C++ Algorithm max_element()用法及代碼示例
- C++ Algorithm merge()用法及代碼示例
- C++ Algorithm min()用法及代碼示例
- C++ Algorithm min_element()用法及代碼示例
- C++ Algorithm minmax()用法及代碼示例
- C++ Algorithm minmax_element()用法及代碼示例
- C++ Algorithm next_permutation()用法及代碼示例
注:本文由純淨天空篩選整理自MKS075大神的英文原創作品 Difference between Abstraction and Encapsulation in C++。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。