DEV Community

Anh.VuHoang
Anh.VuHoang

Posted on

How to control using interface vs abstract class in c#.

It is true that computers have more power than ever.SDKs are so smart to support developers quickly and effectively. But I assure that crucial knowledge of programming is important. These are building amazing frameworks or super platforms while People mix up what is an interface or an abstract class, when do, why use it.
We are here to clearly make some mistakes. This knowledge is gained today and used to implement an application that is effective and optimized.

Interface
An interface is like a contract that a class must follow. The body of interfaces doesn't provide any implementation of these methods. It only defines this type of return, name's method and parameters.
Today, some languages of programming, such as C# 10 Defaults Methods or Java which are enable concrete implementation methods. It means these IDEs don't notice that it is invalid.

Image description

It is a contract, so any class or struct implement interface must provide implementation details.

Abstract class
An abstract class as a sort of halfway house between a pure interface and a fully implemented class. It is more flexible than interfaces. We can require implementation in this derived class through abstract functions. These methods can also be overridden if the base class allows for overriding by virtual keyword.

Use abstract classes as base common functions to inherit or override. We can change this method to meet with derived classes, while no changes to base functions also impact other classes.

Similarly between abstract class and interface
In fact, both interfaces and abstract classes cannot be instantiated. We may think that they are not complete. They need more implementations before they can be instantiated.
Another key is that a class can both inherit from a abstract class and implement multiple interfaces.

Image description

Differences between Abstract class and Interface
The main difference between an interface and an abstract class is that an interface cannot have properties. It only supports fields, while an abstract class can have both fields and properties.

Another key difference is that classes can implement more than one interface, but they can extend only one abstract class. Design classes implement multiple interfaces, which is the Interface Segregation Principle in SOLID.

Another difference is that interfaces can be implemented by classes or extended by an interface, because an interface extending another interface is not responsible for implementing methods from the parent interface.

Inclusion
In summary, the choice between abstraction and interfaces depends on the relationships between classes and the level of implementation detail that you want to provide. Use abstraction when there is a common implementation among related classes, and use interfaces when there is a common contract among unrelated classes.

Abstraction and interfaces are both essential concepts in object-oriented programming. It is important to note that we should mix up definitions. Using it correctly will help optimize your application.

Hostinger image

Get n8n VPS hosting 3x cheaper than a cloud solution

Get fast, easy, secure n8n VPS hosting from $4.99/mo at Hostinger. Automate any workflow using a pre-installed n8n application and no-code customization.

Start now

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay