Encapsulation describes the idea of bundling data and methods that work on that data within one unit, e.g., a class.
The general idea of this mechanism is simple. If you have an attribute that is not visible from the outside of an object, and bundle it with methods that provide read or write access to it, then you can hide specific information and control access to the internal state of the object.
Learn Encapsulation with an Example
To understand what is encapsulation in detail consider the following bank account class with deposit and show balance methods
class Account { private int account_number; private int account_balance; public void show Data() { //code to show data } public void deposit(int a) { if (a < 0) { //show error } else account_balance = account_balance + a; } }
Suppose a hacker managed to gain access to the code of your bank account. Now, he tries to deposit amount -100 into your account by two ways. Let see his first method or approach.
Approach 1: He tries to deposit an invalid amount (say -100) into your bank account by manipulating the code.
class Haker{
Account a = new Account();
a.account_balance=-100;
}
Now, the question is – Is that possible? Let investigate.
Usually, a variable in a class are set as "private" as shown below. It can only be accessed with the methods defined in the class. No other class or object can access them.
class Account {
private int account_number;
private int account_balance;
public void Deposit(int a){
}
If a data member is private, it means it can only be accessed within the same class. No outside class can access private data member or variable of other class.
So in our case hacker cannot deposit amount -100 to your account.
Approach 2: Hacker's first approach failed to deposit the amount. Next, he tries to do deposit a amount -100 by using "deposit" method.
But method implementation has a check for negative values. So the second approach also fails.
Thus, you never expose your data to an external party. Which makes your application secure.
The entire code can be thought of a capsule, and you can only communicate through the messages. Hence the name encapsulation.
Advantages of Encapsulation
- Encapsulation is binding the data with its related functionalities. Here functionalities mean "methods" and data means "variables"
- So we keep variable and methods in one place. That place is "class." Class is the base for encapsulation.
- With Encapsulation, you can hide (restrict access) to critical data members in your code, which improves security
- As we discussed earlier, if a data member is declared "private", then it can only be accessed within the same class. No outside class can access data member (variable) of other class.
- However, if you need to access these variables, you have to use public "getter" and "setter" methods.
No comments:
Post a Comment