Object-Oriented Programming: Beyond the Basics

Intermediate Updated March 21, 2025

🧱 Object-Oriented Programming: Beyond the Basics

🔹 Inheritance & Polymorphism

class Animal
{
    public virtual void Speak()
    {
        Console.WriteLine("Animal speaks");
    }
}

class Dog : Animal
{
    public override void Speak()
    {
        Console.WriteLine("Dog barks");
    }
}

Animal pet = new Dog();
pet.Speak();  // Output: Dog barks

🔹 Abstract Classes vs Interfaces

abstract class Shape
{
    public abstract double Area();
}

interface IDrawable
{
    void Draw();
}

class Circle : Shape, IDrawable
{
    public double Radius { get; set; }
    public override double Area() => Math.PI * Radius * Radius;
    public void Draw() => Console.WriteLine("Drawing Circle");
}
| Feature        | Abstract Class                  | Interface                                |  
|----------------|---------------------------------|------------------------------------------|
| Implementation | Can have method bodies          | Cannot (until default interface methods) |
| Inheritance    | One abstract class max          | Multiple interfaces allowed              |
| Use Case       | Shared base behavior            | Common capabilities                      |