Note: We will use a famous example, an Animal, for the whole article
What is Abstract?
Abstract class provide a base define for something (Ex: Base class for Dog and Bird is Animal). It present for Polymorphism in OOP. An abstract class is declared using the abstract keyword. It can contain both abstract methods (without implementations) and non-abstract methods (with implementations). Take a look at example below
We define abstract class Animal with the following detail:
- Properties: name
- Abstract methods: MoveBy
- Non-abstract methods: Print

Next, we will create two classes Dog and Bird which implement Animal. After that, we initialize them
Now we can get some point in here:
- Every
DogandBirdhave the name (1) - But
Dogmove by leg andBirdmove by wing (maybe by leg also but assume it) (2)
With (1), we can declare Print method in Animal with non-abstract type to use for Dog and Bird
With (2), the MoveBy method must be abstract and it would be declared in each class later. This is the key point to show difference between abstract and non-abstract method.
Summary,
-
Abstractclass provide a base definition (Ex: Animal) -
Abstractmethod provide base method which execute differently for each class implement (Ex: MoveBy) -
Non-abstract methodare usually use as a common method for all class implementation (Ex: Print)
What is Interface?
For short, an interface is a completely “abstract class” that defines a contract for related functionalities. When we sign a contract, we must provide/do everything defined in a contract, like A must give B 100k$ and don't need to know A give cash or transfer - that is the Abstraction in OOP. Take a look at the example below
We define interface class IAction with the following detail:
- Move
- Talk

Next, we will extend two classes Dog and Bird, which have been implement Animal, with IAction.

We can see in IAction, we have two methods with abstract types that execute differently in each class.
Summary,
-
Interfacedefine a contract or set of rules that classes must adhere to. -
Interfaceclass contains only abstract method, not fields





Top comments (0)