Let
me explain with an example. Suppose there are two interfaces Interface1,
Interface2 with same method signature like ‘void print’.
Program.cs
using System; interface Interface1 { void print(); } interface Interface2 { void print(); } class MyClass : Interface1, Interface2 { public void print() { Console.WriteLine("Hello World"); } } class Program { static void Main(string[] args) { MyClass obj = new MyClass(); obj.print(); } }
Output
Hello
World
Notify
above snippet, ‘MyClass’ implements both the interfaces Interface1, Interface2
and provide implementation for print method. But sometimes you may want to
provide different implementations for ‘print’ method of Interface1 and ‘print’
method of Interface2. You can do that by using explicit interface
implementation.
You
can provide explicit implementation like below.
class
MyClass : Interface1, Interface2
{
void Interface1.print()
{
Console.WriteLine("Hello
Interface1");
}
void Interface2.print()
{
Console.WriteLine("Hello
Interface2");
}
}
When
a class explicitly implements an interface, the interface method is no longer
accessed through class reference variable, it should be accessed through
interface reference variable. Access modifiers are not allowed while
implementing the interfaces explicitly.
Program.cs
using System; interface Interface1 { void print(); } interface Interface2 { void print(); } class MyClass : Interface1, Interface2 { void Interface1.print() { Console.WriteLine("Hello Interface1"); } void Interface2.print() { Console.WriteLine("Hello Interface2"); } } class Program { static void Main(string[] args) { Interface1 obj1 = new MyClass(); Interface2 obj2 = new MyClass(); obj1.print(); obj2.print(); } }
Output
Hello
Interface1
Hello
Interface2
Providing default
implementation
You can also specify default implementation to a method.
You can also specify default implementation to a method.
class MyClass : Interface1, Interface2 { public void print() { Console.WriteLine("Hello World"); } void Interface1.print() { Console.WriteLine("Hello Interface1"); } void Interface2.print() { Console.WriteLine("Hello Interface2"); } }
Following
statement calls default implementation.
MyClass
obj3 = new MyClass(); // Prints Hello
World
Program.cs
using System; interface Interface1 { void print(); } interface Interface2 { void print(); } class MyClass : Interface1, Interface2 { public void print() { Console.WriteLine("Hello World"); } void Interface1.print() { Console.WriteLine("Hello Interface1"); } void Interface2.print() { Console.WriteLine("Hello Interface2"); } } class Program { static void Main(string[] args) { Interface1 obj1 = new MyClass(); Interface2 obj2 = new MyClass(); MyClass obj3 = new MyClass(); obj1.print(); obj2.print(); obj3.print(); } }
Output
Hello
Interface1
Hello
Interface2
Hello
World
No comments:
Post a Comment