Bird
Raised Fist0
C Sharp (C#)programming~20 mins

Why interfaces are needed in C Sharp (C#) - Challenge Your Understanding

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Challenge - 5 Problems
πŸŽ–οΈ
Interface Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
🧠 Conceptual
intermediate
2:00remaining
Purpose of Interfaces in C#
Why do programmers use interfaces in C#?
ATo define a contract that classes can implement, ensuring they provide specific methods.
BTo replace inheritance completely and avoid code reuse.
CTo create objects directly without classes.
DTo store data like variables and constants only.
Attempts:
2 left
πŸ’‘ Hint
Think about how interfaces help different classes share common behavior.
❓ Predict Output
intermediate
2:00remaining
Output of Interface Implementation
What is the output of this C# code?
C Sharp (C#)
interface IAnimal {
    void Speak();
}

class Dog : IAnimal {
    public void Speak() {
        System.Console.WriteLine("Woof");
    }
}

class Cat : IAnimal {
    public void Speak() {
        System.Console.WriteLine("Meow");
    }
}

class Program {
    static void Main() {
        IAnimal animal = new Dog();
        animal.Speak();
        animal = new Cat();
        animal.Speak();
    }
}
A
Woof
Woof
B
Meow
Woof
C
Woof
Meow
DCompilation error because interfaces cannot be instantiated
Attempts:
2 left
πŸ’‘ Hint
Look at which class instance is assigned to the interface variable before calling Speak.
πŸ”§ Debug
advanced
2:00remaining
Identify the Error with Interface Implementation
What error will this code produce?
C Sharp (C#)
interface IVehicle {
    void Drive();
}

class Car : IVehicle {
    // Missing Drive method implementation
}

class Program {
    static void Main() {
        IVehicle v = new Car();
        v.Drive();
    }
}
ACompilation error: Cannot create instance of interface
BRuntime error: NullReferenceException
CNo error, outputs nothing
DCompilation error: 'Car' does not implement interface member 'IVehicle.Drive()'
Attempts:
2 left
πŸ’‘ Hint
Check if all interface methods are implemented in the class.
πŸ“ Syntax
advanced
2:00remaining
Correct Interface Syntax
Which option shows the correct way to declare an interface with one method in C#?
Ainterface IExample { void DoWork(); }
Binterface IExample { void DoWork() {} }
Cinterface IExample { void DoWork() => Console.WriteLine("Work"); }
Dinterface IExample { public void DoWork(); }
Attempts:
2 left
πŸ’‘ Hint
Interfaces only declare method signatures without bodies.
πŸš€ Application
expert
3:00remaining
Using Interfaces for Flexible Code
Given these classes and interface, what is the output of the program?
C Sharp (C#)
interface IShape {
    double Area();
}

class Circle : IShape {
    public double Radius { get; set; }
    public Circle(double r) { Radius = r; }
    public double Area() => 3.14 * Radius * Radius;
}

class Square : IShape {
    public double Side { get; set; }
    public Square(double s) { Side = s; }
    public double Area() => Side * Side;
}

class Program {
    static void Main() {
        IShape[] shapes = { new Circle(2), new Square(3) };
        double totalArea = 0;
        foreach (var shape in shapes) {
            totalArea += shape.Area();
        }
        System.Console.WriteLine($"Total area: {totalArea}");
    }
}
ATotal area: 13.56
BTotal area: 21.56
CTotal area: 18.56
DCompilation error due to interface usage
Attempts:
2 left
πŸ’‘ Hint
Calculate area of circle (Ο€rΒ²) and square (sideΒ²) and add them.

Practice

(1/5)
1. Why do we use interfaces in C# programming?
easy
A. To define a contract that classes must follow
B. To store data like variables
C. To create graphical user interfaces
D. To write comments in code

Solution

  1. Step 1: Understand the purpose of interfaces

    Interfaces specify methods that a class must implement, acting like a contract.
  2. Step 2: Compare other options

    Options B, C, and D describe unrelated concepts: data storage, UI design, and comments.
  3. Final Answer:

    To define a contract that classes must follow -> Option A
  4. Quick Check:

    Interface purpose = contract [OK]
Hint: Interfaces define required methods, not data or UI [OK]
Common Mistakes:
  • Confusing interfaces with classes
  • Thinking interfaces store data
  • Mixing interfaces with UI design
2. Which of the following is the correct way to declare an interface in C#?
easy
A. enum IExample { DoWork };
B. class IExample { void DoWork(); }
C. interface IExample { void DoWork(); }
D. struct IExample { void DoWork(); }

Solution

  1. Step 1: Identify interface syntax

    In C#, interfaces are declared using the keyword interface followed by the name and method signatures.
  2. Step 2: Check other options

    Options A, B, and C use enum, class, and struct keywords, which are not for interfaces.
  3. Final Answer:

    interface IExample { void DoWork(); } -> Option C
  4. Quick Check:

    Interface keyword = interface declaration [OK]
Hint: Look for 'interface' keyword to declare interfaces [OK]
Common Mistakes:
  • Using class or struct instead of interface
  • Missing method signature semicolon
  • Confusing enums with interfaces
3. What will be the output of this C# code?
interface IAnimal { void Speak(); }
class Dog : IAnimal { public void Speak() { Console.WriteLine("Woof"); } }
class Cat : IAnimal { public void Speak() { Console.WriteLine("Meow"); } }
static void Main() {
IAnimal animal = new Dog();
animal.Speak();
animal = new Cat();
animal.Speak();
}
medium
A. Meow Woof
B. Woof Meow
C. Woof Woof
D. Meow Meow

Solution

  1. Step 1: Understand interface usage

    The variable animal is of type IAnimal and first assigned a Dog object, so calling Speak() prints "Woof".
  2. Step 2: Change object and call method again

    animal is then assigned a Cat object, so calling Speak() prints "Meow".
  3. Final Answer:

    Woof Meow -> Option B
  4. Quick Check:

    Interface variable calls method of assigned object [OK]
Hint: Interface variable calls method of current object type [OK]
Common Mistakes:
  • Assuming interface variable fixes method output
  • Mixing order of outputs
  • Forgetting to implement interface methods
4. Identify the error in this code snippet:
interface IVehicle { void Drive(); }
class Car : IVehicle { }
medium
A. Car class should be abstract
B. Interface IVehicle cannot be empty
C. Drive() method should have a body in interface
D. Car class must implement Drive() method

Solution

  1. Step 1: Check interface implementation rules

    A class implementing an interface must provide bodies for all interface methods.
  2. Step 2: Analyze given code

    Car class implements IVehicle but does not define Drive(), causing a compile error.
  3. Final Answer:

    Car class must implement Drive() method -> Option D
  4. Quick Check:

    Implement all interface methods [OK]
Hint: Implement all interface methods in the class [OK]
Common Mistakes:
  • Thinking interface methods have bodies
  • Assuming empty class is valid implementation
  • Confusing abstract class requirement
5. You want to write a method that accepts any object that can be saved to a database. Which approach best uses interfaces to achieve this?
hard
A. Define an interface ISaveable with method Save(), then accept ISaveable parameter
B. Use object type parameter and check type inside method
C. Create a base class Saveable and inherit from it
D. Write separate methods for each class type

Solution

  1. Step 1: Understand interface benefits

    Interfaces allow different classes to share a common method signature, enabling polymorphism.
  2. Step 2: Analyze options for flexibility and maintainability

    Define an interface ISaveable with method Save(), then accept ISaveable parameter uses an interface ISaveable with Save() method, allowing any class implementing it to be passed in.
  3. Step 3: Compare other options

    Use object type parameter and check type inside method uses object and type checks, which is less clean. Create a base class Saveable and inherit from it uses inheritance, which is less flexible. Write separate methods for each class type duplicates code.
  4. Final Answer:

    Define an interface ISaveable with method Save(), then accept ISaveable parameter -> Option A
  5. Quick Check:

    Interfaces enable flexible method parameters [OK]
Hint: Use interface parameters for flexible method inputs [OK]
Common Mistakes:
  • Using object and type checks instead of interfaces
  • Relying only on inheritance
  • Writing duplicate methods for each type