Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Why encapsulation matters
📖 Scenario: Imagine you are building a simple bank account system. You want to keep the account balance safe so no one can change it directly by mistake. This is where encapsulation helps.
🎯 Goal: You will create a BankAccount class that keeps the balance private. You will add methods to safely deposit and withdraw money. Finally, you will show the balance using a method.
📋 What You'll Learn
Create a class called BankAccount with a private field balance of type decimal
Add a public method Deposit that adds money to balance
Add a public method Withdraw that subtracts money from balance only if there is enough money
Add a public method GetBalance that returns the current balance
Create an instance of BankAccount and use the methods to deposit, withdraw, and print the balance
💡 Why This Matters
🌍 Real World
Encapsulation is used in real bank software to protect account balances and prevent errors or fraud.
💼 Career
Understanding encapsulation is essential for writing safe and maintainable code in any software development job.
Progress0 / 4 steps
1
Create the BankAccount class with a private balance
Create a class called BankAccount with a private field balance of type decimal and set it to 0.
C Sharp (C#)
Hint
Use private decimal balance = 0m; inside the class.
2
Add Deposit and Withdraw methods
Add a public method Deposit that takes a decimal amount and adds it to balance. Add a public method Withdraw that takes a decimal amount and subtracts it from balance only if balance is greater or equal to amount.
C Sharp (C#)
Hint
Use public void Deposit(decimal amount) and public void Withdraw(decimal amount) methods with the described logic.
3
Add GetBalance method
Add a public method GetBalance that returns the current balance as decimal.
C Sharp (C#)
Hint
Use public decimal GetBalance() method that returns balance.
4
Create BankAccount instance and use methods
Create an instance of BankAccount called account. Deposit 100.50, withdraw 20.25, then print the balance using Console.WriteLine and account.GetBalance().
C Sharp (C#)
Hint
Create BankAccount account = new BankAccount();, then call Deposit(100.50m), Withdraw(20.25m), and print balance with Console.WriteLine(account.GetBalance());.
Practice
(1/5)
1. What is the main purpose of encapsulation in C#?
easy
A. To allow direct modification of class fields from anywhere
B. To hide the internal data of a class and protect it from outside access
C. To make all class data public for easy access
D. To increase the size of the program
Solution
Step 1: Understand encapsulation concept
Encapsulation means hiding data inside a class to protect it from outside interference.
Step 2: Identify the purpose of encapsulation
It prevents direct access to data, allowing control through methods or properties.
Final Answer:
To hide the internal data of a class and protect it from outside access -> Option B
Quick Check:
Encapsulation = Data protection [OK]
Hint: Encapsulation means hiding data inside classes [OK]
Common Mistakes:
Thinking encapsulation makes all data public
Confusing encapsulation with inheritance
Believing encapsulation increases program size
2. Which of the following is the correct way to declare a private field in a C# class?
easy
A. private int age;
B. public int age;
C. int private age;
D. private: int age;
Solution
Step 1: Recall C# syntax for access modifiers
In C#, the keyword private comes before the type and variable name.
Step 2: Check each option
private int age; uses private int age; which is correct syntax for a private field.
Final Answer:
private int age; -> Option A
Quick Check:
Private field syntax = private int age; [OK]
Hint: Private fields start with 'private' keyword before type [OK]
Common Mistakes:
Using 'public' instead of 'private' for private fields
Placing 'private' after the type
Using C++ style 'private:' which is invalid in C#
3. What will be the output of the following C# code?
class Person {
private string name = "Alice";
public string GetName() {
return name;
}
}
var p = new Person();
Console.WriteLine(p.GetName());
medium
A. Alice
B. name
C. Compilation error
D. null
Solution
Step 1: Understand private field and public method
The field name is private but accessible inside the class. The method GetName() returns the value of name.
Step 2: Check the output of calling GetName()
Calling p.GetName() returns "Alice", which is printed.
Final Answer:
Alice -> Option A
Quick Check:
Private field accessed via public method = Alice [OK]
Hint: Private data accessed through public method returns actual value [OK]
Common Mistakes:
Expecting a compilation error due to private field
Thinking it prints the field name 'name'
Assuming null because field is private
4. Identify the error in this C# class that tries to encapsulate a field:
class BankAccount {
private double balance;
public double GetBalance() {
return balance;
}
public void SetBalance(double amount) {
balance = amount;
}
}
var account = new BankAccount();
account.balance = 1000;
medium
A. Method SetBalance should return a value
B. GetBalance method should be private
C. Cannot access private field 'balance' directly outside the class
D. balance should be public to allow direct access
Solution
Step 1: Check access to private field outside class
The code tries to assign account.balance = 1000; but balance is private, so this causes an error.
Step 2: Understand encapsulation rules
Private fields cannot be accessed directly outside the class; access must be through methods like SetBalance.
Final Answer:
Cannot access private field 'balance' directly outside the class -> Option C
Quick Check:
Private fields block direct outside access [OK]
Hint: Private fields can't be accessed directly outside class [OK]
Common Mistakes:
Thinking private fields can be accessed directly
Believing setter methods must return values
Assuming getters should be private
5. You want to protect a class field so it can only be set to positive values. Which encapsulation approach is best in C#?
hard
A. Make the field protected and allow subclasses to set any value
B. Make the field public and check values outside the class
C. Make the field private and provide a public getter only
D. Make the field private and provide a public setter method that validates the value
Solution
Step 1: Understand the need for validation
To ensure only positive values are set, validation must happen inside the class.
Step 2: Choose encapsulation method
Making the field private and using a public setter method with validation allows control over allowed values.
Final Answer:
Make the field private and provide a public setter method that validates the value -> Option D
Quick Check:
Private field + validated setter = safe data [OK]
Hint: Use private field with validated public setter method [OK]