- Blog Categories
- Software Development
- Data Science
- AI/ML
- Marketing
- General
- MBA
- Management
- Legal
- Software Development Projects and Ideas
- 12 Computer Science Project Ideas
- 28 Beginner Software Projects
- Top 10 Engineering Project Ideas
- Top 10 Easy Final Year Projects
- Top 10 Mini Projects for Engineers
- 25 Best Django Project Ideas
- Top 20 MERN Stack Project Ideas
- Top 12 Real Time Projects
- Top 6 Major CSE Projects
- 12 Robotics Projects for All Levels
- Java Programming Concepts
- Abstract Class in Java and Methods
- Constructor Overloading in Java
- StringBuffer vs StringBuilder
- Java Identifiers: Syntax & Examples
- Types of Variables in Java Explained
- Composition in Java: Examples
- Append in Java: Implementation
- Loose Coupling vs Tight Coupling
- Integrity Constraints in DBMS
- Different Types of Operators Explained
- Career and Interview Preparation in IT
- Top 14 IT Courses for Jobs
- Top 20 Highest Paying Languages
- 23 Top CS Interview Q&A
- Best IT Jobs without Coding
- Software Engineer Salary in India
- 44 Agile Methodology Interview Q&A
- 10 Software Engineering Challenges
- Top 15 Tech's Daily Life Impact
- 10 Best Backends for React
- Cloud Computing Reference Models
- Web Development and Security
- Find Installed NPM Version
- Install Specific NPM Package Version
- Make API Calls in Angular
- Install Bootstrap in Angular
- Use Axios in React: Guide
- StrictMode in React: Usage
- 75 Cyber Security Research Topics
- Top 7 Languages for Ethical Hacking
- Top 20 Docker Commands
- Advantages of OOP
- Data Science Projects and Applications
- 42 Python Project Ideas for Beginners
- 13 Data Science Project Ideas
- 13 Data Structure Project Ideas
- 12 Real-World Python Applications
- Python Banking Project
- Data Science Course Eligibility
- Association Rule Mining Overview
- Cluster Analysis in Data Mining
- Classification in Data Mining
- KDD Process in Data Mining
- Data Structures and Algorithms
- Binary Tree Types Explained
- Binary Search Algorithm
- Sorting in Data Structure
- Binary Tree in Data Structure
- Binary Tree vs Binary Search Tree
- Recursion in Data Structure
- Data Structure Search Methods: Explained
- Binary Tree Interview Q&A
- Linear vs Binary Search
- Priority Queue Overview
- Python Programming and Tools
- Top 30 Python Pattern Programs
- List vs Tuple
- Python Free Online Course
- Method Overriding in Python
- Top 21 Python Developer Skills
- Reverse a Number in Python
- Switch Case Functions in Python
- Info Retrieval System Overview
- Reverse a Number in Python
- Real-World Python Applications
- Data Science Careers and Comparisons
- Data Analyst Salary in India
- Data Scientist Salary in India
- Free Excel Certification Course
- Actuary Salary in India
- Data Analyst Interview Guide
- Pandas Interview Guide
- Tableau Filters Explained
- Data Mining Techniques Overview
- Data Analytics Lifecycle Phases
- Data Science Vs Analytics Comparison
- Artificial Intelligence and Machine Learning Projects
- Exciting IoT Project Ideas
- 16 Exciting AI Project Ideas
- 45+ Interesting ML Project Ideas
- Exciting Deep Learning Projects
- 12 Intriguing Linear Regression Projects
- 13 Neural Network Projects
- 5 Exciting Image Processing Projects
- Top 8 Thrilling AWS Projects
- 12 Engaging AI Projects in Python
- NLP Projects for Beginners
- Concepts and Algorithms in AIML
- Basic CNN Architecture Explained
- 6 Types of Regression Models
- Data Preprocessing Steps
- Bagging vs Boosting in ML
- Multinomial Naive Bayes Overview
- Bayesian Network Example
- Bayes Theorem Guide
- Top 10 Dimensionality Reduction Techniques
- Neural Network Step-by-Step Guide
- Technical Guides and Comparisons
- Make a Chatbot in Python
- Compute Square Roots in Python
- Permutation vs Combination
- Image Segmentation Techniques
- Generative AI vs Traditional AI
- AI vs Human Intelligence
- Random Forest vs Decision Tree
- Neural Network Overview
- Perceptron Learning Algorithm
- Selection Sort Algorithm
- Career and Practical Applications in AIML
- AI Salary in India Overview
- Biological Neural Network Basics
- Top 10 AI Challenges
- Production System in AI
- Top 8 Raspberry Pi Alternatives
- Top 8 Open Source Projects
- 14 Raspberry Pi Project Ideas
- 15 MATLAB Project Ideas
- Top 10 Python NLP Libraries
- Naive Bayes Explained
- Digital Marketing Projects and Strategies
- 10 Best Digital Marketing Projects
- 17 Fun Social Media Projects
- Top 6 SEO Project Ideas
- Digital Marketing Case Studies
- Coca-Cola Marketing Strategy
- Nestle Marketing Strategy Analysis
- Zomato Marketing Strategy
- Monetize Instagram Guide
- Become a Successful Instagram Influencer
- 8 Best Lead Generation Techniques
- Digital Marketing Careers and Salaries
- Digital Marketing Salary in India
- Top 10 Highest Paying Marketing Jobs
- Highest Paying Digital Marketing Jobs
- SEO Salary in India
- Content Writer Salary Guide
- Digital Marketing Executive Roles
- Career in Digital Marketing Guide
- Future of Digital Marketing
- MBA in Digital Marketing Overview
- Digital Marketing Techniques and Channels
- 9 Types of Digital Marketing Channels
- Top 10 Benefits of Marketing Branding
- 100 Best YouTube Channel Ideas
- YouTube Earnings in India
- 7 Reasons to Study Digital Marketing
- Top 10 Digital Marketing Objectives
- 10 Best Digital Marketing Blogs
- Top 5 Industries Using Digital Marketing
- Growth of Digital Marketing in India
- Top Career Options in Marketing
- Interview Preparation and Skills
- 73 Google Analytics Interview Q&A
- 56 Social Media Marketing Q&A
- 78 Google AdWords Interview Q&A
- Top 133 SEO Interview Q&A
- 27+ Digital Marketing Q&A
- Digital Marketing Free Course
- Top 9 Skills for PPC Analysts
- Movies with Successful Social Media Campaigns
- Marketing Communication Steps
- Top 10 Reasons to Be an Affiliate Marketer
- Career Options and Paths
- Top 25 Highest Paying Jobs India
- Top 25 Highest Paying Jobs World
- Top 10 Highest Paid Commerce Job
- Career Options After 12th Arts
- Top 7 Commerce Courses Without Maths
- Top 7 Career Options After PCB
- Best Career Options for Commerce
- Career Options After 12th CS
- Top 10 Career Options After 10th
- 8 Best Career Options After BA
- Projects and Academic Pursuits
- 17 Exciting Final Year Projects
- Top 12 Commerce Project Topics
- Top 13 BCA Project Ideas
- Career Options After 12th Science
- Top 15 CS Jobs in India
- 12 Best Career Options After M.Com
- 9 Best Career Options After B.Sc
- 7 Best Career Options After BCA
- 22 Best Career Options After MCA
- 16 Top Career Options After CE
- Courses and Certifications
- 10 Best Job-Oriented Courses
- Best Online Computer Courses
- Top 15 Trending Online Courses
- Top 19 High Salary Certificate Courses
- 21 Best Programming Courses for Jobs
- What is SGPA? Convert to CGPA
- GPA to Percentage Calculator
- Highest Salary Engineering Stream
- 15 Top Career Options After Engineering
- 6 Top Career Options After BBA
- Job Market and Interview Preparation
- Why Should You Be Hired: 5 Answers
- Top 10 Future Career Options
- Top 15 Highest Paid IT Jobs India
- 5 Common Guesstimate Interview Q&A
- Average CEO Salary: Top Paid CEOs
- Career Options in Political Science
- Top 15 Highest Paying Non-IT Jobs
- Cover Letter Examples for Jobs
- Top 5 Highest Paying Freelance Jobs
- Top 10 Highest Paying Companies India
- Career Options and Paths After MBA
- 20 Best Careers After B.Com
- Career Options After MBA Marketing
- Top 14 Careers After MBA In HR
- Top 10 Highest Paying HR Jobs India
- How to Become an Investment Banker
- Career Options After MBA - High Paying
- Scope of MBA in Operations Management
- Best MBA for Working Professionals India
- MBA After BA - Is It Right For You?
- Best Online MBA Courses India
- MBA Project Ideas and Topics
- 11 Exciting MBA HR Project Ideas
- Top 15 MBA Project Ideas
- 18 Exciting MBA Marketing Projects
- MBA Project Ideas: Consumer Behavior
- What is Brand Management?
- What is Holistic Marketing?
- What is Green Marketing?
- Intro to Organizational Behavior Model
- Tech Skills Every MBA Should Learn
- Most Demanding Short Term Courses MBA
- MBA Salary, Resume, and Skills
- MBA Salary in India
- HR Salary in India
- Investment Banker Salary India
- MBA Resume Samples
- Sample SOP for MBA
- Sample SOP for Internship
- 7 Ways MBA Helps Your Career
- Must-have Skills in Sales Career
- 8 Skills MBA Helps You Improve
- Top 20+ SAP FICO Interview Q&A
- MBA Specializations and Comparative Guides
- Why MBA After B.Tech? 5 Reasons
- How to Answer 'Why MBA After Engineering?'
- Why MBA in Finance
- MBA After BSc: 10 Reasons
- Which MBA Specialization to choose?
- Top 10 MBA Specializations
- MBA vs Masters: Which to Choose?
- Benefits of MBA After CA
- 5 Steps to Management Consultant
- 37 Must-Read HR Interview Q&A
- Fundamentals and Theories of Management
- What is Management? Objectives & Functions
- Nature and Scope of Management
- Decision Making in Management
- Management Process: Definition & Functions
- Importance of Management
- What are Motivation Theories?
- Tools of Financial Statement Analysis
- Negotiation Skills: Definition & Benefits
- Career Development in HRM
- Top 20 Must-Have HRM Policies
- Project and Supply Chain Management
- Top 20 Project Management Case Studies
- 10 Innovative Supply Chain Projects
- Latest Management Project Topics
- 10 Project Management Project Ideas
- 6 Types of Supply Chain Models
- Top 10 Advantages of SCM
- Top 10 Supply Chain Books
- What is Project Description?
- Top 10 Project Management Companies
- Best Project Management Courses Online
- Salaries and Career Paths in Management
- Project Manager Salary in India
- Average Product Manager Salary India
- Supply Chain Management Salary India
- Salary After BBA in India
- PGDM Salary in India
- Top 7 Career Options in Management
- CSPO Certification Cost
- Why Choose Product Management?
- Product Management in Pharma
- Product Design in Operations Management
- Industry-Specific Management and Case Studies
- Amazon Business Case Study
- Service Delivery Manager Job
- Product Management Examples
- Product Management in Automobiles
- Product Management in Banking
- Sample SOP for Business Management
- Video Game Design Components
- Top 5 Business Courses India
- Free Management Online Course
- SCM Interview Q&A
- Fundamentals and Types of Law
- Acceptance in Contract Law
- Offer in Contract Law
- 9 Types of Evidence
- Types of Law in India
- Introduction to Contract Law
- Negotiable Instrument Act
- Corporate Tax Basics
- Intellectual Property Law
- Workmen Compensation Explained
- Lawyer vs Advocate Difference
- Law Education and Courses
- LLM Subjects & Syllabus
- Corporate Law Subjects
- LLM Course Duration
- Top 10 Online LLM Courses
- Online LLM Degree
- Step-by-Step Guide to Studying Law
- Top 5 Law Books to Read
- Why Legal Studies?
- Pursuing a Career in Law
- How to Become Lawyer in India
- Career Options and Salaries in Law
- Career Options in Law India
- Corporate Lawyer Salary India
- How To Become a Corporate Lawyer
- Career in Law: Starting, Salary
- Career Opportunities: Corporate Law
- Business Lawyer: Role & Salary Info
- Average Lawyer Salary India
- Top Career Options for Lawyers
- Types of Lawyers in India
- Steps to Become SC Lawyer in India
- Tutorials
- Software Tutorials
- C Tutorials
- Recursion in C: Fibonacci Series
- Checking String Palindromes in C
- Prime Number Program in C
- Implementing Square Root in C
- Matrix Multiplication in C
- Understanding Double Data Type
- Factorial of a Number in C
- Structure of a C Program
- Building a Calculator Program in C
- Compiling C Programs on Linux
- Java Tutorials
- Handling String Input in Java
- Determining Even and Odd Numbers
- Prime Number Checker
- Sorting a String
- User-Defined Exceptions
- Understanding the Thread Life Cycle
- Swapping Two Numbers
- Using Final Classes
- Area of a Triangle
- Skills
- Explore Skills
- Management Skills
- Software Engineering
- JavaScript
- Data Structure
- React.js
- Core Java
- Node.js
- Blockchain
- SQL
- Full stack development
- Devops
- NFT
- BigData
- Cyber Security
- Cloud Computing
- Database Design with MySQL
- Cryptocurrency
- Python
- Digital Marketings
- Advertising
- Influencer Marketing
- Performance Marketing
- Search Engine Marketing
- Email Marketing
- Content Marketing
- Social Media Marketing
- Display Advertising
- Marketing Analytics
- Web Analytics
- Affiliate Marketing
- MBA
- MBA in Finance
- MBA in HR
- MBA in Marketing
- MBA in Business Analytics
- MBA in Operations Management
- MBA in International Business
- MBA in Information Technology
- MBA in Healthcare Management
- MBA In General Management
- MBA in Agriculture
- MBA in Supply Chain Management
- MBA in Entrepreneurship
- MBA in Project Management
- Management Program
- Consumer Behaviour
- Supply Chain Management
- Financial Analytics
- Introduction to Fintech
- Introduction to HR Analytics
- Fundamentals of Communication
- Art of Effective Communication
- Introduction to Research Methodology
- Mastering Sales Technique
- Business Communication
- Fundamentals of Journalism
- Economics Masterclass
- Free Courses
- Home
- Blog
- Data Science
- What is Encapsulation in OOPS? Types, Examples, Implementation, & More
What is Encapsulation in OOPS? Types, Examples, Implementation, & More
Updated on Feb 10, 2025 | 17 min read
Share:
Table of Contents
- What is Encapsulation in OOPS, and What are its Types?
- What are the Two Important Properties of Encapsulation in OOPS?
- How Does Encapsulation in OOPS Work? Learn With Examples
- Encapsulation in C++: How is it Done + Example
- Encapsulation in Java: How is it Done + Example
- Encapsulation in Python: How is it Done + Example
- What are the Advantages and Disadvantages of Encapsulation in OOPS?
- What are the Real-world Analogies of Encapsulation in OOPS?
- How Does Encapsulation Compare to Other 3 Pillars of OOPS?
- How Can upGrad Help You?
Encapsulation in OOPS (Object-Oriented Programming) is a vital concept that protects your data and keeps your classes neat. By bundling related properties and functions into a single unit, you decide exactly how outsiders interact with that unit, preventing unwanted meddling and keeping your code simpler to maintain.
Whether you are building small projects or tackling more complex tasks, this approach helps you avoid messy code and unexpected bugs.
In this blog, you'll explore the core ideas behind encapsulation in OOPS and discover how C++, Java, and Python handle it. You'll learn about different types of encapsulation, understand its advantages and disadvantages, and pick up insights on data security and code organization.
What is Encapsulation in OOPS, and What are its Types?
Encapsulation in Object-Oriented Programming combines data (attributes) and methods (functions) under one class. This allows you to control exactly how those methods interact with each other and how much of that interaction is visible to outside code.
Keeping certain parts private prevents unauthorized or accidental changes and maintains a clean boundary around your data.
Let’s understand it better with an example – consider a simple ‘StudentRecord’ class that manages a student’s name, marks, and roll number. In many programming languages, you control access to class members through access specifiers listed below:
- Private Variables: You keep names and marks hidden, so no one updates them directly.
- Public Methods: You create setters and getters to handle these variables. If someone tries to pass invalid marks, you can reject that upfront.
- Data Consistency: Any future updates to ‘StudentRecord’ remain inside the class, so they don’t break anything else in your program.
Now that you understand encapsulation meaning in programming, you’ll see how it can take different forms in OOPS in the next section.
What Are the Types of Encapsulation in OOPS?
When discussing Encapsulation in OOPS, different strategies can help securely organize data and functions.
Here are the common approaches you might find:
- Member Variable Encapsulation: This focuses on declaring variables as private (or protected). You then provide specific methods to read or change those variables, preventing unwanted direct access.
- Function Encapsulation: Specific functions are marked private, limiting who can call them. Only authorized methods within the class or its subclasses can interact with these functions.
- Class Encapsulation: An entire class can be hidden from external code. If you label the class private (or package-private, depending on the language), any outside code won’t be able to create or manipulate its objects directly.
What are the Two Important Properties of Encapsulation in OOPS?
Yes, encapsulation in OOPS does group data and methods – but it’s more than that. It also brings a set of rules that govern how information is protected and concealed. By applying these rules, you can keep sensitive parts of your code safe while still allowing valid interactions through designated access points.
Here are two core properties that make this process effective:
1. Data Protection
Data Protection focuses on guarding sensitive variables behind class boundaries. For example, you might place details like passwords or bank balances in a private section of the class and then offer only controlled functions for reading or updating those details.
This approach reduces the risk of mistakes and unauthorized changes since you control how outside code interacts with the data.
Let’s understand this with the help of an example code.
In the following Java example, a BankAccount class uses private fields for balance and allows only controlled operations on that balance.
- Private balance is defined.
- Public methods deposit, withdraw, and getBalance handle valid operations on that balance.
public class BankAccount {
private double balance;
public BankAccount(double initialBalance) {
if (initialBalance >= 0) {
balance = initialBalance;
} else {
balance = 0;
}
}
public void deposit(double amount) {
if (amount > 0) {
balance += amount;
}
}
public void withdraw(double amount) {
if (amount <= balance && amount > 0) {
balance -= amount;
}
}
public double getBalance() {
return balance;
}
}
Output:
120.0
Why it helps: Direct access to balance is blocked. You control deposits and withdrawals through the class’s own methods, which means no external code can set an invalid balance.
2. Information Hiding
Information Hiding goes one step further by concealing not just the data but also any internal implementation. You only reveal the methods or interfaces that someone needs to accomplish tasks with your class.
This separation lets you modify or improve the internal code later without affecting anything that relies on those public interfaces. It also keeps your overall design simpler for anyone using the class.
Let’s understand this with the help of an example code.
In this C++ example, a Student class includes hidden logic for validating age and makes that logic available only through public methods.
- A private helper method, isValidAge, checks age validity.
- The setDetails method uses this helper method before saving any age value.
#include <iostream>
using namespace std;
class Student {
private:
string name;
int age;
// Internal logic for validating data
bool isValidAge(int a) {
return (a > 0 && a < 150);
}
public:
// Public interface
void setDetails(string n, int a) {
name = n;
if (isValidAge(a)) {
age = a;
} else {
age = 0;
}
}
void display() {
cout << "Name: " << name << "\nAge: " << age << endl;
}
};
int main() {
Student s;
s.setDetails("Rahul", 25);
s.display();
return 0;
}
Output:
Name: Rahul
Age: 25
Why it helps: By exposing only setDetails and display, you can change how age is validated or stored later without breaking any external code.
How Does Encapsulation in OOPS Work? Learn With Examples
As you know, encapsulation ensures that data stays hidden unless a user is allowed to see it. You define how data is accessed and manipulated through a clear set of rules, which keeps your classes organized.
Once you lock in these rules, you protect internal details while letting other parts of your program interact with the data through specific methods.
Here’s a clear step-by-step guidance on how encapsulation in OOPS works:
- Identify Data and Methods: Choose which variables or properties you want to hide and decide which operations need public access.
- Set Access Levels: Make important attributes private (or protected) to prevent direct changes. Expose only the methods that perform controlled tasks, such as setters and getters.
- Validate Inputs: Write checks in your setter methods to catch invalid data before it updates the hidden variables.
- Restrict Entry Points: Keep any sensitive functions private. Only allow other class methods or child classes (if relevant) to call them.
Now, let’s understand the working of encapsulation in OOPS with an example.
Below is a Java example that follows these steps and shows how encapsulation looks in practice:
- A private marks field ensures no one can directly write random values into it.
- The setter setMarks checks if the provided number is valid, then assigns it or sets a default.
Rahul’s marks default to 0 in this snippet since 120 didn’t fit the allowed range. That’s the power of encapsulation: you’re free to enforce strict rules and keep your data in a healthy state.
// File: Student.java
public class Student {
private String name;
private int marks;
public Student(String n, int m) {
name = n;
setMarks(m); // Uses setter for validation
}
public void setMarks(int m) {
if (m >= 0 && m <= 100) {
marks = m;
} else {
marks = 0; // default if invalid
}
}
public int getMarks() {
return marks;
}
public String getName() {
return name;
}
}
// File: Demo.java
public class Demo {
public static void main(String[] args) {
Student s1 = new Student("Aditi", 85);
System.out.println(s1.getName() + " => " + s1.getMarks());
Student s2 = new Student("Rahul", 120); // Invalid
System.out.println(s2.getName() + " => " + s2.getMarks());
}
}
Output:
Aditi => 85
Rahul => 0
In the coming sections, you’ll learn how to implement encapsulation in C++, Java, and Python. But before you can do that, you must understand that access modifiers differ in all these languages. Explore how!
Different Access Modifiers in C++, Java, and Python
Here’s a quick snapshot table citing the differences. Check it out to easily understand how encapsulation is implemented in these programming languages. .
Language |
Private / Protected |
Public |
C++ Modifiers | private, protected | public |
Java Modifiers | private, protected | public |
Python Modifiers | No strict enforcement, but prefix with __var for private convention | Regular function or variable name is considered public |
That said, let’s dive into their implementation through examples.
Encapsulation in C++: How is it Done + Example
Encapsulation in C++ controls which parts of your code can access or modify data, keeping everything organized and safe. You often rely on private or protected members for sensitive details, then add public methods to handle valid interactions. This avoids unwanted changes and keeps your classes easy to maintain.
Here are some steps you can follow:
- Identify Important Data: Decide which variables need to be shielded from direct access, like scores or balances.
- Use Private or Protected: Mark those variables as private if no other classes should touch them or protected if subclassing might require controlled access.
- Create Public Methods: Provide setters and getters that validate input or enforce rules before any data gets stored or retrieved.
- Add Internal Checks: Keep logic that the outside world doesn’t need in private functions. This way, only your class methods can call them.
Example: Encapsulating a Student’s Details
Here, encapsulation prevents random external code from assigning negative or impossible values to marks. Thus, you maintain full control over valid data and guard against accidental errors.
- A Student class stores name and marks as private.
- Setters and getters manage those values.
- The main function creates objects and shows how data is safely read and written.
#include <iostream>
#include <string>
using namespace std;
class Student {
private:
string name;
int marks;
bool isValidMarks(int m) {
return (m >= 0 && m <= 100);
}
public:
void setName(string n) {
name = n;
}
void setMarks(int m) {
if (isValidMarks(m)) {
marks = m;
} else {
marks = 0; // default if invalid
}
}
string getName() {
return name;
}
int getMarks() {
return marks;
}
};
int main() {
Student s1, s2;
s1.setName("Ravi");
s1.setMarks(88);
s2.setName("Priya");
s2.setMarks(120); // invalid, gets set to 0
cout << s1.getName() << " => " << s1.getMarks() << endl;
cout << s2.getName() << " => " << s2.getMarks() << endl;
return 0;
}
Output:
Ravi => 88
Priya => 0
You can also study OOPS concepts in C++ to further expand your understanding of making software applications secure.
Encapsulation in Java: How is it Done + Example
Encapsulation in Java revolves around declaring your key data as private and then using public methods for controlled access. This way, you can insert checks, logs, or any additional logic without letting external code meddle with the underlying details. It’s a clean way to guard information while keeping classes flexible for future changes.
Here are some steps you can follow:
- Declare Private Fields: Choose fields like balance or age that shouldn’t be modified directly.
- Create Public Setters: Provide methods that validate data before storing it. For example, you can reject negative values or set a default.
- Add Public Getters: Allow read-only access through these methods. This is handy if you need to convert or process data before returning it.
- Keep Internal Checks: If your class requires helper methods that the outside world shouldn’t call, keep them private. That preserves clarity for anyone using the class.
Example: Encapsulating an Employee’s Details
In this code, you control every update to an employee’s salary while keeping the logic simple and centralized. If you ever decide to adjust the calculation or add error messages, the rest of your program remains unchanged.
- A private salary field ensures no one sets or retrieves its value without the class’s supervision.
- The setSalary method checks for valid input, and the getSalary method returns the approved salary.
// File: Employee.java
public class Employee {
private String name;
private double salary;
public Employee(String n, double initialSalary) {
name = n;
setSalary(initialSalary); // Uses the setter for validation
}
public void setSalary(double amount) {
if (amount >= 0) {
salary = amount;
} else {
salary = 0;
}
}
public double getSalary() {
return salary;
}
public String getName() {
return name;
}
}
// File: Demo.java
public class Demo {
public static void main(String[] args) {
Employee emp1 = new Employee("Reema", 45000);
System.out.println(emp1.getName() + " => " + emp1.getSalary());
Employee emp2 = new Employee("Nikhil", -100);
System.out.println(emp2.getName() + " => " + emp2.getSalary());
}
}
Output:
Reema => 45000.0
Nikhil => 0.0
Need further clarification? Check out the OOPS Concept in Java Explained for Beginners to better grasp the subject.
Encapsulation in Python: How is it Done + Example
Encapsulation in Python takes a less strict approach compared to languages like C++ or Java, but you can still structure your code so that only approved methods touch important data.
Typically, you rely on naming conventions — especially prefixing an attribute with double underscores — to signal that it’s meant for internal use. You then supply property getters or regular methods to handle valid changes.
Here are a few steps to keep in mind:
- Use Naming Conventions: Prefix private attributes with __ (e.g., __salary). Although Python won’t prevent direct access, the double underscores discourage unauthorized changes.
- Provide Getter and Setter Methods: Let other parts of your code call these public methods to retrieve or modify your hidden variables. Add checks to keep values within sensible limits.
- Keep the Logic Clear: Tuck those details inside private methods if you need extra validation or formatting. You can rename them using double underscores so they stay out of sight to outsiders.
Example: Encapsulating Details in a Python Class
In this code, while Python won’t block you from accessing __salary if you try hard enough, this pattern signals the right way to interact with employee data and keeps your code neatly organized.
class Employee:
def __init__(self, name, salary):
self.name = name
self.__salary = 0
self.set_salary(salary)
def set_salary(self, amount):
if amount > 0:
self.__salary = amount
else:
self.__salary = 0
def get_salary(self):
return self.__salary
# Example usage:
if __name__ == "__main__":
emp = Employee("Raj", 30000)
print(emp.name, "=>", emp.get_salary())
emp.set_salary(-500) # Invalid, defaults to 0
print(emp.name, "=>", emp.get_salary())
Output:
Raj => 30000
Raj => 0
Also Read: A Complete Guide on OOPs Concepts in Python
What are the Advantages and Disadvantages of Encapsulation in OOPS?
Encapsulation brings clear boundaries to how data is accessed, which can help you reduce errors and keep your code more organized. However, it also comes with certain trade-offs you need to consider before deciding how strictly to lock down each part of your system.
Let’s explore both!
Advantages of Encapsulation in OOPS
Here’s a tabulated snapshot of the benefits of encapsulation in OOPS.
Advantage |
Explanation |
Data Protection | Restricts direct access so only approved methods can modify sensitive details. |
Improved Maintenance | Contains changes within a class, letting you adjust internals without disturbing other parts. |
Simplified Debugging | Makes it easier to pinpoint issues, since each class manages its own data and logic. |
Reusability | Encapsulated modules can be reused in multiple projects with minimal refactoring. |
Disadvantages of Encapsulation in OOPS
Here’s a summary of the pitfalls of encapsulation you must know.
Disadvantage |
Explanation |
Added Complexity | Excessive private members and many getters/setters can create confusion. |
Possible Performance Hit | Layers of method calls can slow things down in performance-critical scenarios. |
Limited Direct Access | Forces you to go through methods instead of directly reading or updating data, which can be inconvenient at times. |
Requires Early Planning | Poor initial design can make future updates harder if you lock down classes too strictly. |
What are the Real-world Analogies of Encapsulation in OOPS?
Encapsulation isn’t just a programming principle. You can spot it in everyday situations where the inside workings of a system are hidden, and only a limited set of actions is offered to the outside world. Seeing these parallels can help you grasp how encapsulation in OOPS secures data and keeps processes efficient.
Below are a few examples that highlight the concept.
1. Sales Department Analogy
In a company's sales department, data like customer records, sales figures, and contracts are handled by a team, but not everyone has access to it.
Encapsulation Example:
- The sales department (class) bundles customer records (data) and sales processing (methods) into a single unit.
- Only authorized staff, such as account managers, can view or update customer records through specific tools (methods), preventing unauthorized changes.
- Internally, the system validates changes before updating sensitive data.
2. ATM Machine
An ATM is a great analogy for encapsulation, as it hides the complexities of its internal processes while exposing limited, user-friendly functionality.
Encapsulation Example:
- The ATM (class) bundles data like account balance and methods like cash withdrawal, deposit, and balance inquiry.
- Users interact only through the ATM's interface (methods), while the internal details like transaction processing and security checks are hidden.
- The system ensures that withdrawals are allowed only within the account's balance limit, enhancing security and error prevention.
3. Car Engine System
A car's engine is encapsulated within the vehicle, with only specific controls exposed to the driver.
Encapsulation Example:
- The engine (class) includes components like pistons and fuel injectors (data) and functions like ignition and acceleration (methods).
- Drivers interact with the car via controls like the accelerator and ignition switch (public methods) without directly accessing internal components.
- Encapsulation ensures the driver cannot inadvertently damage internal systems while allowing controlled functionality.
How Does Encapsulation Compare to Other 3 Pillars of OOPS?
Object-Oriented Programming (OOP) is built upon four fundamental principles, often referred to as pillars, that guide software design and promote code reusability, maintainability, and scalability.
These pillars are Abstraction, Encapsulation, Inheritance, and Polymorphism. Each plays a vital role in creating robust and well-structured applications.
Let's dive into how encapsulation compares with the other three pillars.
1. Encapsulation vs Abstraction
Abstraction simplifies complex systems by modeling classes appropriate to the problem and working at a suitable level of complexity. It involves hiding the complex implementation details and exposing only the essential information about an object. This allows developers to focus on what an object does rather than how it achieves it.
Here’s how it differs from encapsulation:
Aspect |
Encapsulation |
Abstraction |
Primary Goal | Data hiding and protection, ensuring data integrity | Hiding complexity and presenting a simplified view to the user |
Implementation | Achieved by declaring class members as private and providing public methods (getters and setters) to access and modify them | Achieved through abstract classes and interfaces, focusing on what an object does rather than how it does it |
Focus | Internal implementation details and data security | External behavior and user interaction |
Analogy | A capsule that protects medicine from external contamination | A car's steering wheel: you know how to use it without knowing the engine's inner workings |
2. Encapsulation vs Inheritance
Inheritance is a mechanism where a new class acquires the properties and behaviors of an existing class. It promotes code reuse by allowing you to create new classes based on existing ones, inheriting their attributes and methods. This establishes a hierarchical relationship between classes, where subclasses inherit from superclasses.
Here’s how it compares with encapsulation in OOPS.
Aspect |
Encapsulation |
Inheritance |
Primary Goal | Data hiding and bundling data with related methods | Code reusability and creating a hierarchy of classes |
Implementation | Restricting access to internal data using access modifiers (private, protected, public) | Creating new classes from existing classes, inheriting their attributes and methods |
Focus | Protecting data and controlling access | Extending functionality and establishing "is-a" relationships |
Analogy | A safe that protects valuable items | A family tree where children inherit traits from their parents |
3. Encapsulation vs Polymorphism
Polymorphism is the ability of an object to take on many forms. More specifically, polymorphism means that a call to a member function will cause a different function to be executed depending on the type of object that invokes the function. It enables you to write code that can work with objects of different classes in a uniform way.
Here’s how it differs from encapsulation in OOPS.
Aspect |
Encapsulation |
Polymorphism |
Primary Goal | Data protection and bundling | Flexibility and the ability to treat objects of different classes uniformly |
Implementation | Hiding internal data and providing controlled access | Using interfaces, abstract classes, and method overriding |
Focus | Internal data representation and access control | External behavior and the ability to take on multiple forms |
Analogy | A well-defined box with specific contents and access points | A remote control that can operate different devices |
How Can upGrad Help You?
Software designers with enhanced skills in encapsulation in OOPS are in great demand these days. If you are a Python, Java or C++ developer, then learning about encapsulation in object-oriented programming can be an asset to your resume.
upGrad offers numerous courses on encapsulation in OOPS that will help you make your software programs secure and reliable. Here are some of the most popular courses that can help you to learn about encapsulation in OOPS:
- AI-Powered Full Stack Development Course by IIITB
- Professional Certificate Program in AI and Data Science
- Master the Cloud and Lead as an Expert Cloud Engineer
- Cloud Computing and DevOps Program by IIITB - (Executive)
- Learn Basic Python Programming
- Programming with Python: Introduction for Beginners
- Learn Python Libraries: NumPy, Matplotlib & Pandas
- Case Study using Tableau, Python and SQL
Looking for more help with your career plans? UpGrad offers free career counseling. These sessions can help you make wise decisions about your career goals.
Unlock the power of data with our popular Data Science courses, designed to make you proficient in analytics, machine learning, and big data!
Explore our Popular Data Science Courses
Elevate your career by learning essential Data Science skills such as statistical modeling, big data processing, predictive analytics, and SQL!
Top Data Science Skills to Learn
Stay informed and inspired with our popular Data Science articles, offering expert insights, trends, and practical tips for aspiring data professionals!
Read our popular Data Science Articles
Frequently Asked Questions (FAQs)
1. What is data hiding in encapsulation?
2. Why is data encapsulation important?
3. What is abstraction vs encapsulation in OOP?
4. Why is it called encapsulation?
5. What is an example of encapsulation?
6. What is a real life example of encapsulation?
7. What is the basis of encapsulation?
8. Why is encapsulation useful?
9. What is class in OOPS?
10. Which language is pure object-oriented?
11. Is a car an example of encapsulation?
Get Free Consultation
By submitting, I accept the T&C and
Privacy Policy
Start Your Career in Data Science Today
Top Resources