Інкапсуляція
Інкапсуляція — це, по суті, спосіб організації даних. Вона полягає в організації даних і методів у вигляді класів, тому вся програма фактично базується на класах, а дані та методи інкапсулюються всередині цих класів. Така інкапсуляція забезпечує контроль доступу до внутрішнього стану об'єкта, сприяє модульності, підтримуваності та безпеці програмного забезпечення.
В інкапсуляції використовуються модифікатори доступу такі як public
, private
та protected
, щоб приховати більшість полів і методів класу та відкривати лише ті, які необхідно використовувати ззовні.
Оскільки більшість даних безпосередньо недоступні поза межами класу, для доступу або зміни даних використовуються гетери та сетери.
Хорошим прикладом є клас Customer
, який визначає клієнта банку:

index.cs
1234567891011121314151617181920212223242526272829303132public class Customer { private double accountBalance; private string customerName; private int pinCode; public Customer(double accountBalance, string customerName, int pinCode) { this.accountBalance = accountBalance; this.customerName = customerName; this.pinCode = pinCode; } public double getBalance(int pinCode) { if (pinCode == this.pinCode) return this.accountBalance; return } public void Deposit(double amount, int pinCode) { if(pinCode == this.pinCode) accountBalance += amount; } public void Withdraw(double amount, int pinCode) { if(pinCode == this.pinCode) accountBalance -= amount; } }
У наведеному вище прикладі жодне поле не є безпосередньо доступним або змінюваним ззовні. Замість цього використовуються методи, такі як Deposit
і Withdraw
, для зміни значення за потреби. Аналогічно, для отримання значення балансу використовується метод getBalance
.
Використання ключового слова public
зазвичай не рекомендується, якщо це не є необхідним.
Нагадаємо, якщо потрібно зробити поле недоступним ззовні класу, але доступним для похідних класів, можна використати модифікатор доступу protected
.
1. Яку роль відіграють модифікатори доступу в інкапсуляції у C#?
2. Який із наведених модифікаторів доступу слід використовувати найменше для збереження інкапсуляції?
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Can you provide an example of encapsulation in code?
Why is using public fields discouraged in encapsulation?
How do getters and setters improve security?
Awesome!
Completion rate improved to 2.04
Інкапсуляція
Свайпніть щоб показати меню
Інкапсуляція — це, по суті, спосіб організації даних. Вона полягає в організації даних і методів у вигляді класів, тому вся програма фактично базується на класах, а дані та методи інкапсулюються всередині цих класів. Така інкапсуляція забезпечує контроль доступу до внутрішнього стану об'єкта, сприяє модульності, підтримуваності та безпеці програмного забезпечення.
В інкапсуляції використовуються модифікатори доступу такі як public
, private
та protected
, щоб приховати більшість полів і методів класу та відкривати лише ті, які необхідно використовувати ззовні.
Оскільки більшість даних безпосередньо недоступні поза межами класу, для доступу або зміни даних використовуються гетери та сетери.
Хорошим прикладом є клас Customer
, який визначає клієнта банку:

index.cs
1234567891011121314151617181920212223242526272829303132public class Customer { private double accountBalance; private string customerName; private int pinCode; public Customer(double accountBalance, string customerName, int pinCode) { this.accountBalance = accountBalance; this.customerName = customerName; this.pinCode = pinCode; } public double getBalance(int pinCode) { if (pinCode == this.pinCode) return this.accountBalance; return } public void Deposit(double amount, int pinCode) { if(pinCode == this.pinCode) accountBalance += amount; } public void Withdraw(double amount, int pinCode) { if(pinCode == this.pinCode) accountBalance -= amount; } }
У наведеному вище прикладі жодне поле не є безпосередньо доступним або змінюваним ззовні. Замість цього використовуються методи, такі як Deposit
і Withdraw
, для зміни значення за потреби. Аналогічно, для отримання значення балансу використовується метод getBalance
.
Використання ключового слова public
зазвичай не рекомендується, якщо це не є необхідним.
Нагадаємо, якщо потрібно зробити поле недоступним ззовні класу, але доступним для похідних класів, можна використати модифікатор доступу protected
.
1. Яку роль відіграють модифікатори доступу в інкапсуляції у C#?
2. Який із наведених модифікаторів доступу слід використовувати найменше для збереження інкапсуляції?
Дякуємо за ваш відгук!