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.

  1. Encapsulation — private state with a controlled public API. BankAccount keeps _balance private and exposes Deposit() that rejects negative amounts.
  2. Abstraction — expose what, hide how. IPaymentGateway.ChargeAsync() hides HTTP calls, signatures and retries.
  3. Inheritance — a derived class reuses and extends a base. Contractor : Employee reuses Name and Describe().
  4. Polymorphism — the same call behaves differently by type. employee.MonthlyPay() runs the Permanent or Contractor override 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 →