Interfaces, Default Members & Dependency Inversion Masterclass
๐ Covered in this chapter:
Interface Contracts ยท Multiple Interfaces ยท Default Interface Members ยท Explicit Implementation ยท Dependency Inversion ยท Interface vs Abstract Class
Welcome to Phase 6 (Chapter 18): C# Interfaces, Default Members & Dependency Inversion Masterclass! An Interface defines a contract that any implementing class or struct must fulfill. Interfaces enable multiple inheritance of behavior, decoupling, unit test mocking, and dependency inversion in enterprise application design.
1Interface Definition & Implementation
C# โ Interface Contract Example
โถ Run in Compiler
interface IPayment
{
void Pay(decimal amount);
}
class CardPayment : IPayment
{
public void Pay(decimal amount)
{
Console.WriteLine($"Paid: {amount:C} via Credit Card");
}
}
class UpiPayment : IPayment
{
public void Pay(decimal amount)
{
Console.WriteLine($"Paid: {amount:C} via UPI Transfer");
}
}
IPayment payment = new CardPayment();
payment.Pay(100.50m);
payment = new UpiPayment();
payment.Pay(250.00m);
2Multiple Interfaces & Dependency Inversion
C# โ Multiple Interfaces
โถ Run in Compiler
interface IPrintable { void Print(); }
interface IStorable { void Save(); }
class Document : IPrintable, IStorable // Multiple interface implementation
{
public void Print() => Console.WriteLine("Printing Document...");
public void Save() => Console.WriteLine("Saving Document to Disk...");
}
Document doc = new();
doc.Print();
doc.Save();
3Technical FAQs
Q1: Why use Interfaces instead of Abstract Classes?
A class can inherit from only ONE abstract class (single class inheritance), but can implement MULTIPLE interfaces (multiple implementation).
Q2: What is Dependency Inversion?
Dependency Inversion is a software design principle where high-level modules depend on abstractions (Interfaces) rather than concrete implementations, promoting loose coupling and testability.