C# | How to Implement Multiple Interfaces Having Same Method Name
Last Updated :
04 Apr, 2019
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:
CSharp
// 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();
}
}
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:
CSharp
// 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();
}
}
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:
CSharp
// 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();
}
}
Output:
GeeksforGeeks
Similar Reads
C# Tutorial C# (pronounced "C-sharp") is a modern, versatile, object-oriented programming language developed by Microsoft in 2000 that runs on the .NET Framework. Whether you're creating Windows applications, diving into Unity game development, or working on enterprise solutions, C# is one of the top choices fo
4 min read
Introduction to .NET Framework The .NET Framework is a software development framework developed by Microsoft that provides a runtime environment and a set of libraries and tools for building and running applications on Windows operating systems. The .NET framework is primarily used on Windows, while .NET Core (which evolved into
6 min read
C# Interview Questions and Answers C# is the most popular general-purpose programming language and was developed by Microsoft in 2000, renowned for its robustness, flexibility, and extensive application range. It is simple and has an object-oriented programming concept that can be used for creating different types of applications.Her
15+ min read
C# Dictionary Dictionary in C# is a generic collection that stores key-value pairs. The working of Dictionary is quite similar to the non-generic hashtable. The advantage of a Dictionary is, that it is a generic type. A dictionary is defined under System.Collections.Generic namespace. It is dynamic in nature mean
5 min read
C# List Class In C#, the List<T> class represents the list of objects that can be accessed by index. It comes under the System.Collections.Generic namespace. List class can be used to create a collection of different types like integers, strings, etc. List<T> class also provides the methods to search,
7 min read
C# Delegates A delegate is an object which refers to a method or you can say it is a reference type variable that can hold a reference to the methods. It provides a way which tells which method is to be called when an event is triggered. For example, if you click on a Button on a form (Windows Form application),
6 min read
ASP.NET Interview Questions and Answer ASP.NET is a popular framework by Microsoft for building fast and scalable web applications. It allows developers to create dynamic websites, services, and apps, using server-side code and offering a user-friendly experience. Trusted by companies like Microsoft, Dell, and Accenture, ASP.NET is used
15+ min read
C# .NET Framework (Basic Architecture and Component Stack) C# (C-Sharp) is a modern, object-oriented programming language developed by Microsoft in 2000. It is a part of the .NET ecosystem and is widely used for building desktop, web, mobile, cloud, and enterprise applications. This is originally tied to the .NET Framework, C# has evolved to be the primary
6 min read
C# Data Types Data types specify the type of data that a valid C# variable can hold. C# is a strongly typed programming language because in C# each type of data (such as integer, character, float, and so forth) is predefined as part of the programming language and all constants or variables defined for a given pr
7 min read
C# Arrays An array is a group of like-typed variables that are referred to by a common name. And each data item is called an element of the array. The data types of the elements may be any valid data type like char, int, float, etc. and the elements are stored in a contiguous location. Length of the array spe
8 min read