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

Default interface methods in C Sharp (C#) - Cheat Sheet & Quick Revision

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
Recall & Review
beginner
What are default interface methods in C#?
Default interface methods allow interfaces to provide a default implementation for methods. This means classes implementing the interface don't have to implement those methods unless they want to override the default behavior.
Click to reveal answer
beginner
How do you declare a default method in an interface?
Inside the interface, you define the method with a body using curly braces. For example:
interface IExample { void Show() { Console.WriteLine("Hello"); } }
Click to reveal answer
beginner
Can a class override a default interface method?
Yes, a class implementing the interface can provide its own implementation of the default method, which will replace the default one.
Click to reveal answer
intermediate
Why were default interface methods introduced in C#?
They were introduced to allow adding new methods to interfaces without breaking existing implementations. This helps evolve interfaces over time.
Click to reveal answer
intermediate
What happens if a class implements two interfaces with the same default method signature?
The class must explicitly implement the method to resolve the conflict, otherwise the compiler will give an error.
Click to reveal answer
What is the main benefit of default interface methods?
AAllow interfaces to have method implementations
BMake interfaces abstract classes
CPrevent classes from implementing interfaces
DRemove the need for interfaces
How do you provide a default implementation in an interface method?
ABy declaring the method without a body
BBy declaring the method with a body inside the interface
CBy implementing the method in the class only
DBy using abstract keyword
If a class implements an interface with a default method, what happens if the class does not implement that method?
ARuntime exception
BCompiler error
CMethod is ignored
DClass uses the default method implementation
Can default interface methods access private members of the implementing class?
AYes, always
BOnly if marked internal
CNo, they cannot access private members
DOnly if class is sealed
What must a class do if it implements two interfaces with conflicting default methods?
AExplicitly implement the conflicting method
BNothing, compiler resolves automatically
CRemove one interface
DMark class as abstract
Explain what default interface methods are and why they are useful.
Think about how interfaces used to work before default methods.
You got /3 concepts.
    Describe how a class can override a default interface method and what happens if it does not.
    Consider what happens when you want to change the default behavior.
    You got /3 concepts.

      Practice

      (1/5)
      1. What is the main purpose of default interface methods in C#?
      easy
      A. Allow interfaces to have method bodies with default behavior
      B. Force all implementing classes to override every method
      C. Prevent interfaces from having any methods
      D. Make interfaces behave like abstract classes

      Solution

      1. Step 1: Understand interface limitations before default methods

        Interfaces could only declare methods without bodies, forcing all implementations to define them.
      2. Step 2: Recognize the role of default interface methods

        Default interface methods allow interfaces to provide a method body, so implementing classes can use or override it.
      3. Final Answer:

        Allow interfaces to have method bodies with default behavior -> Option A
      4. Quick Check:

        Default interface methods = method bodies in interfaces [OK]
      Hint: Default interface methods add bodies to interfaces [OK]
      Common Mistakes:
      • Thinking interfaces cannot have any method bodies
      • Confusing default methods with abstract methods
      • Believing all methods must be overridden
      2. Which of the following is the correct syntax to declare a default interface method in C#?
      easy
      A. abstract void Show() { Console.WriteLine("Hello"); }
      B. void Show();
      C. default void Show() { Console.WriteLine("Hello"); }
      D. void Show() => Console.WriteLine("Hello");

      Solution

      1. Step 1: Recall default method syntax in interfaces

        Default interface methods can have bodies using either block or expression-bodied syntax.
      2. Step 2: Identify correct syntax among options

        void Show() => Console.WriteLine("Hello"); uses expression-bodied syntax correctly inside interface method declaration.
      3. Final Answer:

        void Show() => Console.WriteLine("Hello"); -> Option D
      4. Quick Check:

        Default method syntax = method with body in interface [OK]
      Hint: Default methods have bodies, unlike abstract declarations [OK]
      Common Mistakes:
      • Using 'default' keyword before method
      • Omitting method body
      • Writing method body without braces or expression syntax
      3. What will be the output of this code?
      interface IExample { void Show() => Console.WriteLine("Default"); }
      class Test : IExample { }
      var t = new Test();
      t.Show();
      medium
      A. Runtime error
      B. Compilation error: Show() not implemented
      C. Default
      D. No output

      Solution

      1. Step 1: Check if class implements Show()

        Class Test does not implement Show(), but interface provides default implementation.
      2. Step 2: Understand default method usage

        Since Test inherits IExample, it uses the default Show() method from interface.
      3. Final Answer:

        Default -> Option C
      4. Quick Check:

        Default method runs if not overridden [OK]
      Hint: If not overridden, default interface method runs [OK]
      Common Mistakes:
      • Assuming missing implementation causes error
      • Expecting runtime error without override
      • Thinking interface methods can't have bodies
      4. Identify the error in this code snippet:
      interface ICalc { int Add(int a, int b) => a + b; }
      class Calc : ICalc { public int Add(int a, int b); }
      medium
      A. Missing method body in Calc's Add method
      B. Interface cannot have method bodies
      C. Calc class must be abstract
      D. Add method should be static

      Solution

      1. Step 1: Check Calc class Add method declaration

        Calc declares Add with a semicolon but no body, which is invalid in a class.
      2. Step 2: Understand method implementation requirements

        Class methods must have bodies unless abstract; here Add is not abstract, so body is required.
      3. Final Answer:

        Missing method body in Calc's Add method -> Option A
      4. Quick Check:

        Class methods need bodies unless abstract [OK]
      Hint: Class methods need bodies unless marked abstract [OK]
      Common Mistakes:
      • Thinking interface can't have bodies
      • Forgetting to add method body in class
      • Assuming method should be static
      5. Given this interface and classes:
      interface ILogger { void Log(string msg) => Console.WriteLine($"Log: {msg}"); }
      class FileLogger : ILogger { public void Log(string msg) => Console.WriteLine($"File: {msg}"); }
      class ConsoleLogger : ILogger { }

      What will be the output of:
      ILogger logger1 = new FileLogger();
      ILogger logger2 = new ConsoleLogger();
      logger1.Log("Test1");
      logger2.Log("Test2");
      hard
      A. File: Test1 File: Test2
      B. File: Test1 Log: Test2
      C. Log: Test1 Log: Test2
      D. Compilation error

      Solution

      1. Step 1: Analyze FileLogger's Log method

        FileLogger overrides Log to print "File: {msg}".
      2. Step 2: Analyze ConsoleLogger's Log method

        ConsoleLogger does not override Log, so uses interface default "Log: {msg}".
      3. Step 3: Predict output for each logger

        logger1.Log("Test1") prints "File: Test1"; logger2.Log("Test2") prints "Log: Test2".
      4. Final Answer:

        File: Test1 Log: Test2 -> Option B
      5. Quick Check:

        Override changes output; default runs if no override [OK]
      Hint: Override changes output; default runs if no override [OK]
      Common Mistakes:
      • Assuming both use default method
      • Expecting compilation error due to default method
      • Confusing which method runs