Encapsulation in objective c
Accessing private data with public method which help to implement code without breaking the code of others who use our code.
Encapsulation is the technique of making the fields in a class private and providing access to the fields via public methods. If a field is declared private, it cannot be accessed by anyone outside the class, thereby hiding the fields within the class. For this reason, encapsulation is also referred to as data hiding.
Encapsulation can be described as a protective barrier that prevents the code and data being randomly accessed by other code defined outside the class. Access to the data and code is tightly controlled by an interface. The main benefit of encapsulation is the ability to modify our implemented code without breaking the code of others who use our code. With this feature Encapsulation gives maintainability, flexibility and extensibility to our code.
Let us look at an example that depicts encapsulation:
/* File name : EncapTest.java */
public class EncapTest
private String name;
private String idNum;
private int age;
public int getAge()
public String getName()
The public methods are the access points to this class.s fields from the outside java world. Normally these methods are referred as getters and setters. Therefore any class that wants to access the variables should access them through these getters and setters.
Benefits of Encapsulation:
- The fields of a class can be made read-only or write-only.
- A class can have total control over what is stored in its fields.
- The users of a class do not know how the class stores its data. A class can change the data type of a field, and users of the class do not need to change any of their code.
The below code is for example for the encapsulation
@interface BankAccount: NSObject
@property double accountBalance;
@property long accountNumber;
@synthesize accountBalance, accountNumber;
NSLog (@”Account Number %i has a balance of %f”, accountNumber, accountBalance);
account1 = [BankAccount alloc];
account1 = [account1 init];
[account1 setAccountBalance: 1500.53];
[account1 setAccountNumber: 34543212];