Difference between Abstract Class and Interface
|1.||When we don’t know anything about implementation just we have requirement specification then we should go for interface concept.||When we are talking about implementation but not completely (Partially) then we should go for Abstract class concept.|
|2.||Inside interface, every method is public whether we are declaring or not. Hence interface is considered as pure 100% Abstract class.||In the case of an abstract class, every method present in abstract class need not be public. We can have an abstract method as well as a fully concrete method.|
We cant declare an interface with the following modifiers.
public -->private, protectedAbstract--> final, static, synchronized, native.
|There are no such restrictions on Abstract class method modifiers.|
We cant declare interface variables with the following modifiers.Private, protected, transient, volatile.
|There are no such restrictions on Abstract class Variable modifiers.|
|5.||Every variable in an interface is public static final, by default. Whether we are declaring or not.||We can declare variable in abstract class as per requirements.|
|6.||For interface variables, it is compulsory we should perform initialization at the time of declaration, if we don’t we will get compile time error.||For abstract class variables, perform initialization at the time of declaration, is not required.|
|7.||Inside interface declaring instance and static blocks are not allowed. We will get a compile-time error if we try to do so.||Inside the abstract class, we can declare instance and static blocks as well.|
|8.||An Interface cannot have constructor declarations.||In the case of an abstract class, we can have constructor, which will be executed at the time of child object creation.|