OOP concepts in C# .NET explained with examples including encapsulation inheritance polymorphism and abstraction

OOP Concepts in C# .NET Explained with Examples

Basic Building Blocks of OOP

1. Class

2. Object

Simple Example of Class and Object

public class Student
{
    public string Name;
    public int Marks;

    public void ShowResult()
    {
        Console.WriteLine(Name + " scored " + Marks + " marks");
    }
}

Explanation:

class Program
{
    static void Main()
    {
        // Creating first object
        Student student1 = new Student();
        student1.Name = "student 1";
        student1.Marks = 85;
        student1.ShowResult();

        // Creating second object
        Student student2 = new Student();
        student2.Name = "student 2";
        student2.Marks = 92;
        student2.ShowResult();
    }
}

Explanation

Output

student 1 scored 85 marks
student 2 scored 92 marks

3. Constructor

1. Default Constructor

public Student()
{
    Name = "Unknown";
    Marks = 0;
}

2. Parameterized Constructor

Why use it?

Example:

public class Student
{
    public string Name;
    public int Marks;

    public Student(string name, int marks)
    {
        Name = name;
        Marks = marks;
    }
}

public class Program
{
    public static void Main()
    {
        Student s1 = new Student("TestName", 85);

        Console.WriteLine(s1.Name);
        Console.WriteLine(s1.Marks);
    }
}

Why OOP Concepts in C# .NET Are Important

Core OOP Concepts in C# .NET

1. Encapsulation (Protecting Data)

public class BankAccount
{
    private double balance;

    public void Deposit(double amount)
    {
        if (amount > 0)
        {
            balance += amount;
        }
    }

    public double GetBalance()
    {
        return balance;
    }
}

2. Inheritance (Reusing Code)

public class Vehicle
{
    public void Start()
    {
        Console.WriteLine("Vehicle started");
    }

    public void Stop()
    {
        Console.WriteLine("Vehicle stopped");
    }
}

public class Car : Vehicle
{
    public void PlayMusic()
    {
        Console.WriteLine("Playing music in car");
    }
}
Car car = new Car();
car.Start();       // inherited
car.PlayMusic();   // own method

Types of Inheritance-:

class A
{
    public void Show()
    {
        Console.WriteLine("Class A method");
    }
}

class B : A
{
    public void Display()
    {
        Console.WriteLine("Class B method");
    }
}
class A
{
    public void ShowA()
    {
        Console.WriteLine("Class A method");
    }
}

class B : A
{
    public void ShowB()
    {
        Console.WriteLine("Class B method");
    }
}

class C : B
{
    public void ShowC()
    {
        Console.WriteLine("Class C method");
    }
}
class Vehicle
{
    public void Start()
    {
        Console.WriteLine("Vehicle started");
    }
}

class Car : Vehicle
{
    public void CarType()
    {
        Console.WriteLine("This is a Car");
    }
}

class Bike : Vehicle
{
    public void BikeType()
    {
        Console.WriteLine("This is a Bike");
    }
}

3. Polymorphism (One Name, Many Forms)

Types of Polymorphism in C#

1. Compile-Time Polymorphism (Method Overloading)

public class Calculator
{
    public int Add(int a, int b)
    {
        return a + b;
    }

    public int Add(int a, int b, int c)
    {
        return a + b + c;
    }
}
Calculator calc = new Calculator();

Console.WriteLine(calc.Add(2, 3));      // 5
Console.WriteLine(calc.Add(2, 3, 4));   // 9

2. Runtime Polymorphism (Method Overriding)

public class Notification
{
    public virtual void Send()
    {
        Console.WriteLine("Sending notification");
    }
}

public class EmailNotification : Notification
{
    public override void Send()
    {
        Console.WriteLine("Sending Email");
    }
}

public class SMSNotification : Notification
{
    public override void Send()
    {
        Console.WriteLine("Sending SMS");
    }
}
Notification n;

n = new EmailNotification();
n.Send();   // Sending Email

n = new SMSNotification();
n.Send();   // Sending SMS

Key Points:

4. Abstraction (Hiding Implementation Details)

Real-life example:

Example in C#

public abstract class Payment
{
    public abstract void Pay();
}

public class CreditCardPayment : Payment
{
    public override void Pay()
    {
        Console.WriteLine("Payment done using Credit Card");
    }
}

public class UpiPayment : Payment
{
    public override void Pay()
    {
        Console.WriteLine("Payment done using UPI");
    }
}
Payment payment;

payment = new CreditCardPayment();
payment.Pay();

payment = new UpiPayment();
payment.Pay();

Key Points:

Conclusion

Related Articles

Leave a Comment

Your email address will not be published. Required fields are marked *