C# | How to Implement Multiple Interfaces Having Same Method Name

Like a class, Interface can have methods, properties, events, and indexers as its members. But interface will contain only the declaration of the members. The implementation of interface’s members will be given by the class who implements the interface implicitly or explicitly.
C# allows the implementation of multiple interfaces with the same method name. To understand how to implement multiple interfaces with the same method name we take an example. In this example, we take two interfaces named as G1 and G2 with the same method name.

Now implement these interfaces in a class named as Geeks and define mymethod() method and when the user will try to call this method, it gives an error because we did not tell the compiler that this method belongs to which interface.

Example:

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# program to illustrate the concept
// of how to inherit multiple interfaces
// with the same method name
using System;
  
// Interface G1 and G2
// contains same method
interface G1 {
  
    // interface method
    void mymethod();
}
  
interface G2 {
  
    // interface method
    void mymethod();
}
  
// 'Geeks' implements both
// G1 and G2 interface
class Geeks : G1, G2 {
  
    // Defining method
    // this statement gives an error
    // because we doesn't specify
    // the interface name
    void mymethod()
    {
        Console.WriteLine("GeeksforGeeks");
    }
}
  
// Driver Class
public class GFG {
  
    // Main Method
    static public void Main()
    {
  
        // Creating object of Geeks
        // this statement gives an error
        // because we doesn't specify
        // the interface name
        Geeks obj = new Geeks();
  
        // calling method
        obj.mymethod();
    }
}

chevron_right


Compile Time Error:

prog.cs(22,7): error CS0737: `Geeks’ does not implement interface member `G1.mymethod()’ and the best implementing candidate `Geeks.mymethod()’ is not public
prog.cs(11,7): (Location of the symbol related to previous error)
prog.cs(28,7): (Location of the symbol related to previous error)
prog.cs(22,7): error CS0535: `Geeks’ does not implement interface member `G2.mymethod()’
prog.cs(17,7): (Location of the symbol related to previous error)
prog.cs(48,7): error CS0122: `Geeks.mymethod()’ is inaccessible due to its protection level
prog.cs(28,7): (Location of the symbol related to previous error)

To remove this error, we will specify the name of the interface with the method name like G1.mymethod(). It tells the compiler that this method belongs to G1 interface. Similarly, G2.mymethod() tells the compiler that this method belongs to the G2 interface.

Example:

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# program to illustrate the concept 
// of how to inherit multiple interfaces 
// with the same method name
using System;
  
// Interface G1 and G2 
// contains same method
interface G1 {
      
    // method declaration
    void mymethod();
}
  
interface G2 {
      
    // method declaration
    void mymethod();
}
  
// Geeks implements both 
// G1 and G2 interface
class Geeks : G1, G2
{
    // Here mymethod belongs to 
    // G1 interface
    void G1.mymethod()
{
    Console.WriteLine("GeeksforGeeks");
}
      
    // Here mymethod belongs to 
    // G2 interface
    void G2.mymethod()
{
    Console.WriteLine("GeeksforGeeks");
}
}
  
// Driver Class
public class GFG {
      
    // Main Method
    static public void Main () {
          
        // Creating object of Geeks
        // of G1 interface
        G1 obj = new Geeks();
          
        // calling G1 interface method
        obj.mymethod();
          
        // Creating object of Geeks
        // of G2 interface
        G2 ob = new Geeks();
          
        // calling G2 interface method
        ob.mymethod();
    }
}

chevron_right


Output :

GeeksforGeeks
GeeksforGeeks

Note: You can also declare the method as public in the class that implements the interfaces. But the confusion will still remain as in the large program a user can’t differentiate which method of which interface is implemented.

Example:

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# program to illustrate the concept
// of how to inherit multiple interfaces
// with the same method name by defining 
// the method as public in the class 
// which implements the interfaces.
using System;
  
// Interface G1 and G2
// contains same method
interface G1 {
  
    // interface method
    void mymethod();
}
  
interface G2 {
  
    // interface method
    void mymethod();
}
  
// 'Geeks' implement both
// G1 and G2 interface
class Geeks : G1, G2 {
  
    // Defining method as public
    public void mymethod()
    {
        Console.WriteLine("GeeksforGeeks");
    }
}
  
// Driver Class
public class GFG {
  
    // Main Method
    static public void Main()
    {
  
        // Creating object of Geeks
        Geeks obj = new Geeks();
  
        // calling method
        obj.mymethod();
    }
}

chevron_right


Output:

GeeksforGeeks


My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.




Article Tags :

2


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.