What Does An Interface Do in Object-Oriented Programming?

What Does An Interface Do in Object-Oriented Programming?

One of many key elements of Object-oriented languages like Java and C# is the power to put in writing lessons utilizing interfaces, which standardize technique definitions and allow enhanced polymorphism. We’ll talk about what they’re, and learn how to use them.

Formalized Polymorphism

Interfaces are mainly lessons with out code. The can outline properties and strategies (although not fields straight) with out truly storing knowledge or writing an implementation for features.

For instance, .NET’s IEnumerable interface is quite common. All of the it requires is a perform that returns an IEnumerator, which can be utilized to iterate over a group.

  1. public interface IEnumerable
  2. {
  3.     IEnumerator GetEnumerator();
  4. }

Each assortment in .NET implements this interface. The truth is, most collections will implement quite a lot of interfaces, all standardizing the strategies used to work with them.

The good thing about doing it this manner is that every one the strategies are standardized within the interface, in order that any time you need one thing to simply accept many sorts of lessons, you are able to do so by accessing the interface strategies.

For instance, foreach loops beneath the hood actually simply use .GetEnumerator(), so they’ll assist any sort of assortment that implements IEnumerable, like Lists, Dictionaries, and HashSets.

  1. void Major()
  2. {
  3.     foreach(var merchandise in  IEnumerable) 
  4.     {
  5.        // do one thing
  6.     }
  7. }

You possibly can consider Interfaces as being a substitute for base lessons. Base lessons are nonetheless very helpful, however requiring each class to inherit and override strategies will be clunky. Plus, you may solely have one base class, however you may implement any variety of interfaces.

Interfaces may also be used instead of sort parameters. For instance, you might have a customized assortment, CustomList<T>. This works for any sort, however for those who wished to name a particular technique on every factor, you may’t, because the compiler has no thought if the kind getting used helps that technique. The one choices you’ll get might be strategies for fundamental objects.

Nonetheless, for those who have been to as a substitute ditch the generic sort parameter and use an interface, you may name a technique on the objects. The gathering will nonetheless assist any sort of sort, although now every merchandise you plan to place in it might want to implement the interface.

Generally, it is best to use interfaces while you’re reusing the identical strategies for a lot of lessons that don’t inherit from one another, and also you’d like to have the ability to write polymorphic code that doesn’t care in regards to the particular underlying class.

Utilizing Interfaces

Interfaces are fairly easy to make use of. They use the identical inheritance syntax as base lessons, a colon after the category definition. Word that if you wish to use an interface with a base class, the bottom class should come first, adopted by a comma after which any interfaces it implements.

When you add the interface definition, you’ll in all probability get an error. Visible Studio will inform you that you just’re not truly implementing the interface properties and strategies. This could truly be very helpful, as for those who make any adjustments to the interface, you’ll have to go and replace all lessons that implement it.

Visible Studio is fairly fancy, and for those who click on “present potential fixes,” you’ll get an choice for VS to mechanically add the interface boilerplate to your class. You’ll clearly want to interchange the NotImplementedExceptions.

You can even implement interfaces explicitly. This has the identical impact, however with completely different syntax that makes it clear which interface the tactic or property is coming from. This seems to be fairly bizarre at first look, however will be helpful for those who’re implementing quite a lot of interfaces.

Writing Your Personal Interfaces

Interface definitions are just about the identical as class definitions, although every technique won’t have a physique, and also you’ll want to make use of “interface,” as a substitute of “class,” clearly. Very like lessons, interfaces can even use generic sort parameters, which will be helpful for customized collections.

You need to use the { get; set; } syntax to specify properties implicitly, which additionally works when implementing them within the precise class:

You can even have interfaces inherit one another. For instance, this ICustomList interface could possibly be much more helpful if it merely together with all different definitions that Checklist makes use of, however provides a couple of customized ones. Now, while you go to make use of the interface, you’ll have to implement all of the interface members from each interface it inherits from.

Source link