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

Default interface methods in C Sharp (C#) - Practice Problems & Coding Challenges

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
🎖️
Default Interface Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
Output of default interface method call

What is the output of this C# code?

C Sharp (C#)
using System;
interface IGreet
{
    void SayHello() => Console.WriteLine("Hello from interface");
}
class Person : IGreet
{
}
class Program
{
    static void Main()
    {
        IGreet p = new Person();
        p.SayHello();
    }
}
ACompile-time error: 'Person' does not implement 'SayHello()'
BHello from interface
CRuntime error: Method not found
DNo output
Attempts:
2 left
💡 Hint

Check if the class implements the interface method explicitly or uses the default.

Predict Output
intermediate
2:00remaining
Overriding default interface method

What will this program print?

C Sharp (C#)
using System;
interface IAnimal
{
    void Speak() => Console.WriteLine("Animal sound");
}
class Dog : IAnimal
{
    public void Speak() => Console.WriteLine("Bark");
}
class Program
{
    static void Main()
    {
        IAnimal a = new Dog();
        a.Speak();
    }
}
ABark
BRuntime error
CCompile-time error: 'Dog' must implement 'Speak()'
DAnimal sound
Attempts:
2 left
💡 Hint

Does the class Dog provide its own Speak() method?

🔧 Debug
advanced
2:00remaining
Why does this code cause a compile error?

Examine the code below. Why does it cause a compile-time error?

C Sharp (C#)
interface ICalc
{
    int Add(int a, int b) => a + b;
}
class Calculator : ICalc
{
    // No Add method implemented here
}
class Program
{
    static void Main()
    {
        Calculator calc = new Calculator();
        int result = calc.Add(2, 3);
        System.Console.WriteLine(result);
    }
}
ANo error, output is 5
BCompile error because default interface methods are not supported in C#
CCompile error because Calculator does not implement Add explicitly and cannot use default interface method
DRuntime error because Add method is missing
Attempts:
2 left
💡 Hint

Check how default interface methods are accessed through class instances.

📝 Syntax
advanced
2:00remaining
Identify the syntax error in default interface method

Which option contains a syntax error in defining a default interface method?

Ainterface ITest { void Show() => Console.WriteLine("Hi"); }
Binterface ITest { void Show() { Console.WriteLine("Hi"); } }
Cinterface ITest { void Show(); }
Dinterface ITest { void Show() => { Console.WriteLine("Hi"); }; }
Attempts:
2 left
💡 Hint

Check the syntax for expression-bodied members in interfaces.

🚀 Application
expert
2:00remaining
How many methods must a class implement for this interface?

Consider this interface with default methods and one abstract method. How many methods must a class implement if it implements this interface?

C Sharp (C#)
interface IOperations
{
    void Start();
    void Stop() => Console.WriteLine("Stopping");
    int Status() => 1;
}
AOne method: only Start() must be implemented
BThree methods: Start(), Stop(), and Status() must be implemented
CTwo methods: Start() and Stop() must be implemented
DNo methods need to be implemented
Attempts:
2 left
💡 Hint

Default interface methods provide implementation. Abstract methods must be implemented.

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