Lesson 1 of 15 in the free OOP Concepts in C# course on DevLadder.
A class is a blueprint; an object is an instance created from it at runtime.
public class BankAccount { private decimal _balance; // field (state) — private public string Owner { get; } // read-only property public decimal Balance => _balance; // computed property public BankAccount(string owner, decimal opening = 0) // constructor { Owner = owner; _balance = opening; } public void Deposit(decimal amount) // method (behaviour) { if (amount <= 0) throw new ArgumentOutOfRangeException(nameof(amount)); _balance += amount; } } var acc = new BankAccount("Divakar", 500); // object acc.Deposit(250); Console.WriteLine(acc.Balance); // 750 Interview questions on OOP Concepts in C
What are the four pillars of OOP? Explain each with an example.
- Encapsulation — private state with a controlled public API.
BankAccountkeeps_balanceprivate and exposesDeposit()that rejects negative amounts. - Abstraction — expose what, hide how.
IPaymentGateway.ChargeAsync()hides HTTP calls, signatures and retries. - Inheritance — a derived class reuses and extends a base.
Contractor : EmployeereusesNameandDescribe(). - Polymorphism — the same call behaves differently by type.
employee.MonthlyPay()runs thePermanentorContractoroverride at runtime.
What is the difference between a class and an object?
A class is a type definition (blueprint) describing fields, properties and methods; it exists in code and metadata. An object is an instance of that class created at runtime with new, occupying memory with its own state. One class, many objects.
What is the difference between method overloading and method overriding?
| Overloading | Overriding |
|---|---|
| Same name, different parameters | Same signature in a derived class |
| Same class (or derived) | Requires virtual/abstract + override |
| Resolved at compile time | Resolved at runtime by the object's type |
| Return type alone can't differ | Return type the same (covariant returns allowed since C# 9) |
Read the full lesson with progress tracking and the rest of the course on DevLadder — free step-by-step tutorials and interview questions for developers.
Next in the course: Constructors: default, parameterised, static, private, chaining →

