When we need to create the common functionality
and behavior of method. The behavior of the method are not changed. In this
scenarios, we will use a abstract class.
For example,
We are working on order place here some
functionality and behavior are same like create order id and place order
details in database etc. here we will use abstract class.
When we need common functionality but behavior may change and we need to follow the functionality strictly then we have to use
interface suppose.
For example,
Suppose we have to place acknowledge to suppliers
about order and it's take as a file format some supplier taking format as csv,
some xml etc. In this scenarios, we will use a Interface because functionality
is same but behavior are changes but strictly we have to follow acknowledge
for supplier.