SlideShare una empresa de Scribd logo
1 de 17
WHAT ARE INTERFACES??

Interfaces are reference types. It is basically a
     class with the following differences:

 1. All members of an interface are explicitly
           PUBLIC and ABSTRACT.

     2. Interface cant contain CONSTANT
 fields, CONSTRUCTORS and DESTRUCTORS.

  3. Its members can’t be declared STATIC.

   4. All the methods are ABSTRACT, hence
   don’t include any implementation code.

5. An Interface can inherit multiple Interfaces.
A                  A              B




   B

                              C


   C
                      THIS IS NOT POSSIBLE
THIS IS POSSIBLE IN
                      IN C#
C#
As evident from the previous diagram, in C#, a class cannot have more than one SUPERCLASS.
For example, a definition like:

Class A: B,C
{
            .........
            .........
}
is not permitted in C#.


However, the designers of the language couldn’t overlook the importance of the concept of
multiple inheritance.
A large number of real life situations require the use of multiple inheritance whereby we inherit
the properties of more than one distinct classes.
For this reason, C# provides the concept of interfaces. Although a class can’t inherit multiple
classes, it can IMPLEMENT multiple interfaces.



                                                   .
DEFINING AN INTERFACE

An interface can contain one or multiple METHODS, POPERTIES, INDEXERS and EVENTS.
But, these are NOT implemented in the interface itself.
They are defined in the class that implements the interface.

Syntax for defining an interface:

interface interfacename
{
  member declarations..
}

interface is a KEYWORD.
interfacename is a valid C# identifier.

Example:

interface Show
{
  void Display();                          // method within interface
  int Aproperty
   {
     get;                                 // property within interface
   }
 event someEvent Changed;
void Display();                           // event within interface
}
EXTENDING AN INTERFACE

Interfaces can be extended like classes. One interface can be sub interfaced
from other interfaces.

Example:

interface addition
{
  int add(int x, int y);
}

interface Compute: addition
{
  int sub(int x, int y);
}

the above code will place both the methods, add() and sub() in the interface
Compute. Any class implementing Compute will be able to implement both
these methods.

INTERFACES CAN EXTEND ONLY INTERFACES, THEY CAN’T EXTEND CLASSES.
This would violate the rule that interfaces can have only abstract members.
IMPLEMENTING INTERFACES

An Interface can be implemented as follows:

class classname: interfacename
{
  body of classname
}

A class can derive from a single class and implement as many interfaces
required:

class classname: superclass, interface1,interface 2,…
{
 body of class name
}

eg:
class A: B,I1,I2,..
 {
…….
……..
}
using System;
interface Addition
{
  int Add();
}
interface Multiplication
{
int Mul();
}
class Compute:Addition,Multiplication
{
  int x,y;
  public Compute(int x, int y)
  {
    this.x=x;
    this.y=y;
   }
public int Add()                        //implement Add()
{
  return(x+y);
}
public int Mul()                        //implement Mul()
{
return(x*y);
}}
Class interfaceTest
{
  public static void Main()
  {
     Compute com=new Compute(10,20);               //Casting
     Addition add=(Addition)com;
     Console.WriteLine(“sum is:”+add.Add());
     Multiplication mul=(Multiplication)com;     //Casting
     Console.WriteLine(“product is:”+mul.Mul());
   }
}



                           OUTPUT

sum is: 30
product is: 200
MULTILPLE IMPEMENTATION OF AN
INTERFACE

Just as a class can implement
multiple interfaces, one single
interface can be implemented by
multiple classes. We demonstrate this
by the following example;

using System;
interface Area;
{
  double Compute(double x)
}
class Square:Area
{
  public double Compute(double x)
  {
    return(x*x);
  }
class Circle:Area
  {
    public double Compute(double x)
     {
       return(Math.PI*x*x);
     }
}
Class InterfaceTest
{
  public static void Main()
  {
    Square sqr=new Square();
    Circle cir=new Circle();
    Area area=(Area)sqr;
    Console.WriteLine(“area of square is:”+area.Compute(10.0));
    area=(Area)cir;
    Console.WriteLine(“area of circle is:”+area.Compute(10.0));
  }
}


                                    OUTPUT
area of square is: 100
area of circle is: 314.159265
INTERFACES AND INHERITANCE:

We may encounter situations where the base class of a derived class
implements an interface. In such situations, when an object of the derived
class is converted to the interface type, the inheritance hierarchy is
searched until it finds a class that has directly implemented the interface.
We consider the following program:


using system;
interface Display
{
  void Print();
}
class B:Display       //implements Display
{
  public void Print()
  {
    Console.Writeline(“base display”);
  }
}
class D:B           //inherits B class
{
 public new void Print()
  {
    Console.Writeline(“Derived display”);
  }
}
class InterfaceTest3
{
 public static void Main()
 {
   D d=new D();
   d.Print();
   Display dis=(Display)d;
   dis.Print();
  }
}

OUTPUT:
Derived display
base display

The statement dis.Print() calls the method in the base class B but not in the derived
class itself.
This is because the derived class doesn’t implement the interface.
EXPLICIT INTERFACE IMPLEMENTATION

The main reason why c# doesn’t support multiple
inheritance is the problem of NAME COLLISION.

But the problem still persists in C# when we are
implementing multiple interfaces.

For example:
let us consider the following scenario, there are two
interfaces and an implementing class as follows:

interface i1
{
  void show();
}
interface i2
{
  void show();
}
class classone: i1,i2
{
  public void display()
  {
    …
    …
  }
The problem is that whether the class classone implements
i1.show() or i2.show()??
This is ambiguous and the compiler will report an error.
To overcome this problem we have something called EXPLICIT
INTERFCAE IMPLEMENTATION. This allows us to specify the name
of the interface we want to implement.

We take the following program as an example:

using system;
intereface i1
{
  void show();
}
interface i2
{
  void show();
}
Class classone: i1,i2
{
  void i1.show()
   {
     Console.Writeline(“ implementing i1”);
   }
void i2.show()
 {
  Console.Writeline(“ implementing i2”);
 }
}
class interfaceImplement
 {
   public static void Main()
    {
      classone c1=new classone();
      i1 x=(i1)c1;
      x.show();
     i2 y=(i2)c1;
     y.show();
   }
}
                                  OUTPUT: implementing i1
                                                    implementing i2
Interfaces c#

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

Abstract class
Abstract classAbstract class
Abstract class
 
Theory of automata and formal language lab manual
Theory of automata and formal language lab manualTheory of automata and formal language lab manual
Theory of automata and formal language lab manual
 
Arrays in Java
Arrays in JavaArrays in Java
Arrays in Java
 
C functions
C functionsC functions
C functions
 
Java 8 Lambda Built-in Functional Interfaces
Java 8 Lambda Built-in Functional InterfacesJava 8 Lambda Built-in Functional Interfaces
Java 8 Lambda Built-in Functional Interfaces
 
Collections and its types in C# (with examples)
Collections and its types in C# (with examples)Collections and its types in C# (with examples)
Collections and its types in C# (with examples)
 
Java 8 features
Java 8 featuresJava 8 features
Java 8 features
 
Structure in c#
Structure in c#Structure in c#
Structure in c#
 
Methods in C#
Methods in C#Methods in C#
Methods in C#
 
Java interfaces
Java interfacesJava interfaces
Java interfaces
 
Strings in Java
Strings in JavaStrings in Java
Strings in Java
 
Constructors and Destructors
Constructors and DestructorsConstructors and Destructors
Constructors and Destructors
 
[OOP - Lec 19] Static Member Functions
[OOP - Lec 19] Static Member Functions[OOP - Lec 19] Static Member Functions
[OOP - Lec 19] Static Member Functions
 
android sqlite
android sqliteandroid sqlite
android sqlite
 
Templates in c++
Templates in c++Templates in c++
Templates in c++
 
Arrays in Java
Arrays in JavaArrays in Java
Arrays in Java
 
Polymorphism in C# Function overloading in C#
Polymorphism in C# Function overloading in C#Polymorphism in C# Function overloading in C#
Polymorphism in C# Function overloading in C#
 
Structures
StructuresStructures
Structures
 
Multiple inheritance possible in Java
Multiple inheritance possible in JavaMultiple inheritance possible in Java
Multiple inheritance possible in Java
 
Constructor
ConstructorConstructor
Constructor
 

Similar a Interfaces c#

Session 6_Java Interfaces_Details_Programs.pdf
Session 6_Java Interfaces_Details_Programs.pdfSession 6_Java Interfaces_Details_Programs.pdf
Session 6_Java Interfaces_Details_Programs.pdfTabassumMaktum
 
Session 6_Interfaces in va examples .ppt
Session 6_Interfaces in va examples .pptSession 6_Interfaces in va examples .ppt
Session 6_Interfaces in va examples .pptTabassumMaktum
 
Session 6_Interfaces in va examples .ppt
Session 6_Interfaces in va examples .pptSession 6_Interfaces in va examples .ppt
Session 6_Interfaces in va examples .pptTabassumMaktum
 
C# .NET: Language Features and Creating .NET Projects, Namespaces Classes and...
C# .NET: Language Features and Creating .NET Projects, Namespaces Classes and...C# .NET: Language Features and Creating .NET Projects, Namespaces Classes and...
C# .NET: Language Features and Creating .NET Projects, Namespaces Classes and...yazad dumasia
 
Visula C# Programming Lecture 8
Visula C# Programming Lecture 8Visula C# Programming Lecture 8
Visula C# Programming Lecture 8Abou Bakr Ashraf
 
Indicate whether each of the following statements is true or false.docx
Indicate whether each of the following statements is true or false.docxIndicate whether each of the following statements is true or false.docx
Indicate whether each of the following statements is true or false.docxmigdalialyle
 
21UCAC31 Java Programming.pdf(MTNC)(BCA)
21UCAC31 Java Programming.pdf(MTNC)(BCA)21UCAC31 Java Programming.pdf(MTNC)(BCA)
21UCAC31 Java Programming.pdf(MTNC)(BCA)ssuser7f90ae
 
OOPS With CSharp - Jinal Desai .NET
OOPS With CSharp - Jinal Desai .NETOOPS With CSharp - Jinal Desai .NET
OOPS With CSharp - Jinal Desai .NETjinaldesailive
 
Introduction to object oriented programming concepts
Introduction to object oriented programming conceptsIntroduction to object oriented programming concepts
Introduction to object oriented programming conceptsGanesh Karthik
 
chapter-10-inheritance.pdf
chapter-10-inheritance.pdfchapter-10-inheritance.pdf
chapter-10-inheritance.pdfstudy material
 
Interface
InterfaceInterface
Interfacevvpadhu
 
Exception handling and packages.pdf
Exception handling and packages.pdfException handling and packages.pdf
Exception handling and packages.pdfKp Sharma
 
Abstract & Interface
Abstract & InterfaceAbstract & Interface
Abstract & InterfaceLinh Lê
 
Chapter27 polymorphism-virtual-function-abstract-class
Chapter27 polymorphism-virtual-function-abstract-classChapter27 polymorphism-virtual-function-abstract-class
Chapter27 polymorphism-virtual-function-abstract-classDeepak Singh
 

Similar a Interfaces c# (20)

Ppt of c++ vs c#
Ppt of c++ vs c#Ppt of c++ vs c#
Ppt of c++ vs c#
 
Session 6_Java Interfaces_Details_Programs.pdf
Session 6_Java Interfaces_Details_Programs.pdfSession 6_Java Interfaces_Details_Programs.pdf
Session 6_Java Interfaces_Details_Programs.pdf
 
Session 6_Interfaces in va examples .ppt
Session 6_Interfaces in va examples .pptSession 6_Interfaces in va examples .ppt
Session 6_Interfaces in va examples .ppt
 
Session 6_Interfaces in va examples .ppt
Session 6_Interfaces in va examples .pptSession 6_Interfaces in va examples .ppt
Session 6_Interfaces in va examples .ppt
 
Interface
InterfaceInterface
Interface
 
C# .NET: Language Features and Creating .NET Projects, Namespaces Classes and...
C# .NET: Language Features and Creating .NET Projects, Namespaces Classes and...C# .NET: Language Features and Creating .NET Projects, Namespaces Classes and...
C# .NET: Language Features and Creating .NET Projects, Namespaces Classes and...
 
Visula C# Programming Lecture 8
Visula C# Programming Lecture 8Visula C# Programming Lecture 8
Visula C# Programming Lecture 8
 
Indicate whether each of the following statements is true or false.docx
Indicate whether each of the following statements is true or false.docxIndicate whether each of the following statements is true or false.docx
Indicate whether each of the following statements is true or false.docx
 
Java interface
Java interfaceJava interface
Java interface
 
21UCAC31 Java Programming.pdf(MTNC)(BCA)
21UCAC31 Java Programming.pdf(MTNC)(BCA)21UCAC31 Java Programming.pdf(MTNC)(BCA)
21UCAC31 Java Programming.pdf(MTNC)(BCA)
 
OOPS With CSharp - Jinal Desai .NET
OOPS With CSharp - Jinal Desai .NETOOPS With CSharp - Jinal Desai .NET
OOPS With CSharp - Jinal Desai .NET
 
Introduction to object oriented programming concepts
Introduction to object oriented programming conceptsIntroduction to object oriented programming concepts
Introduction to object oriented programming concepts
 
chapter-10-inheritance.pdf
chapter-10-inheritance.pdfchapter-10-inheritance.pdf
chapter-10-inheritance.pdf
 
Interface
InterfaceInterface
Interface
 
OOPS IN C++
OOPS IN C++OOPS IN C++
OOPS IN C++
 
Exception handling and packages.pdf
Exception handling and packages.pdfException handling and packages.pdf
Exception handling and packages.pdf
 
Abstract & Interface
Abstract & InterfaceAbstract & Interface
Abstract & Interface
 
Inheritance
InheritanceInheritance
Inheritance
 
Interfaces in java
Interfaces in javaInterfaces in java
Interfaces in java
 
Chapter27 polymorphism-virtual-function-abstract-class
Chapter27 polymorphism-virtual-function-abstract-classChapter27 polymorphism-virtual-function-abstract-class
Chapter27 polymorphism-virtual-function-abstract-class
 

Último

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Victor Rentea
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelDeepika Singh
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistandanishmna97
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Zilliz
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...apidays
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxRemote DBA Services
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Victor Rentea
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 

Último (20)

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 

Interfaces c#

  • 1.
  • 2. WHAT ARE INTERFACES?? Interfaces are reference types. It is basically a class with the following differences: 1. All members of an interface are explicitly PUBLIC and ABSTRACT. 2. Interface cant contain CONSTANT fields, CONSTRUCTORS and DESTRUCTORS. 3. Its members can’t be declared STATIC. 4. All the methods are ABSTRACT, hence don’t include any implementation code. 5. An Interface can inherit multiple Interfaces.
  • 3. A A B B C C THIS IS NOT POSSIBLE THIS IS POSSIBLE IN IN C# C#
  • 4. As evident from the previous diagram, in C#, a class cannot have more than one SUPERCLASS. For example, a definition like: Class A: B,C { ......... ......... } is not permitted in C#. However, the designers of the language couldn’t overlook the importance of the concept of multiple inheritance. A large number of real life situations require the use of multiple inheritance whereby we inherit the properties of more than one distinct classes. For this reason, C# provides the concept of interfaces. Although a class can’t inherit multiple classes, it can IMPLEMENT multiple interfaces. .
  • 5. DEFINING AN INTERFACE An interface can contain one or multiple METHODS, POPERTIES, INDEXERS and EVENTS. But, these are NOT implemented in the interface itself. They are defined in the class that implements the interface. Syntax for defining an interface: interface interfacename { member declarations.. } interface is a KEYWORD. interfacename is a valid C# identifier. Example: interface Show { void Display(); // method within interface int Aproperty { get; // property within interface } event someEvent Changed; void Display(); // event within interface }
  • 6. EXTENDING AN INTERFACE Interfaces can be extended like classes. One interface can be sub interfaced from other interfaces. Example: interface addition { int add(int x, int y); } interface Compute: addition { int sub(int x, int y); } the above code will place both the methods, add() and sub() in the interface Compute. Any class implementing Compute will be able to implement both these methods. INTERFACES CAN EXTEND ONLY INTERFACES, THEY CAN’T EXTEND CLASSES. This would violate the rule that interfaces can have only abstract members.
  • 7. IMPLEMENTING INTERFACES An Interface can be implemented as follows: class classname: interfacename { body of classname } A class can derive from a single class and implement as many interfaces required: class classname: superclass, interface1,interface 2,… { body of class name } eg: class A: B,I1,I2,.. { ……. …….. }
  • 8. using System; interface Addition { int Add(); } interface Multiplication { int Mul(); } class Compute:Addition,Multiplication { int x,y; public Compute(int x, int y) { this.x=x; this.y=y; } public int Add() //implement Add() { return(x+y); } public int Mul() //implement Mul() { return(x*y); }}
  • 9. Class interfaceTest { public static void Main() { Compute com=new Compute(10,20); //Casting Addition add=(Addition)com; Console.WriteLine(“sum is:”+add.Add()); Multiplication mul=(Multiplication)com; //Casting Console.WriteLine(“product is:”+mul.Mul()); } } OUTPUT sum is: 30 product is: 200
  • 10. MULTILPLE IMPEMENTATION OF AN INTERFACE Just as a class can implement multiple interfaces, one single interface can be implemented by multiple classes. We demonstrate this by the following example; using System; interface Area; { double Compute(double x) } class Square:Area { public double Compute(double x) { return(x*x); } class Circle:Area { public double Compute(double x) { return(Math.PI*x*x); } }
  • 11. Class InterfaceTest { public static void Main() { Square sqr=new Square(); Circle cir=new Circle(); Area area=(Area)sqr; Console.WriteLine(“area of square is:”+area.Compute(10.0)); area=(Area)cir; Console.WriteLine(“area of circle is:”+area.Compute(10.0)); } } OUTPUT area of square is: 100 area of circle is: 314.159265
  • 12. INTERFACES AND INHERITANCE: We may encounter situations where the base class of a derived class implements an interface. In such situations, when an object of the derived class is converted to the interface type, the inheritance hierarchy is searched until it finds a class that has directly implemented the interface. We consider the following program: using system; interface Display { void Print(); } class B:Display //implements Display { public void Print() { Console.Writeline(“base display”); } }
  • 13. class D:B //inherits B class { public new void Print() { Console.Writeline(“Derived display”); } } class InterfaceTest3 { public static void Main() { D d=new D(); d.Print(); Display dis=(Display)d; dis.Print(); } } OUTPUT: Derived display base display The statement dis.Print() calls the method in the base class B but not in the derived class itself. This is because the derived class doesn’t implement the interface.
  • 14. EXPLICIT INTERFACE IMPLEMENTATION The main reason why c# doesn’t support multiple inheritance is the problem of NAME COLLISION. But the problem still persists in C# when we are implementing multiple interfaces. For example: let us consider the following scenario, there are two interfaces and an implementing class as follows: interface i1 { void show(); } interface i2 { void show(); } class classone: i1,i2 { public void display() { … … }
  • 15. The problem is that whether the class classone implements i1.show() or i2.show()?? This is ambiguous and the compiler will report an error. To overcome this problem we have something called EXPLICIT INTERFCAE IMPLEMENTATION. This allows us to specify the name of the interface we want to implement. We take the following program as an example: using system; intereface i1 { void show(); } interface i2 { void show(); }
  • 16. Class classone: i1,i2 { void i1.show() { Console.Writeline(“ implementing i1”); } void i2.show() { Console.Writeline(“ implementing i2”); } } class interfaceImplement { public static void Main() { classone c1=new classone(); i1 x=(i1)c1; x.show(); i2 y=(i2)c1; y.show(); } } OUTPUT: implementing i1 implementing i2