Difference between abstract class and interface

Below are the dif­fer­ence between abstract class and inter­face.

Sr No.Abstract classInter­face
1Abstract class is par­i­al imple­ment­ed class because it con­ta­tion par­i­tal imple­men­ta­tion of inter­face method.Inter­face is ful­ly unim­ple­ment­ed class.
2An abstract class can con­tain abstract and non-abstract meth­ods.Inter­face can con­tain only abstract meth­ods. In Java 8 Onwards, it can con­tatin default and sta­t­ic meth­ods also.
3You can not imple­ment mul­ti­ple inher­i­tance using abstract class.You can imple­ment mul­ti­ple inher­i­tance using inter­face.
4Abstract class can con­tain final, non-final, sta­t­ic and non-sta­t­ic vari­ables in class body.Inter­face can con­tain only sta­t­ic and final vari­ables.
5Abstract class con­tain abstract key­word at the time of dec­la­ra­tion.Inter­face con­tain inter­face key­word at the time of inter­face dec­la­ra­tion.
6An abstract class can extend anoth­er Java class and it can imple­ment mul­ti­ple inter­faces.An inter­face can extend anoth­er Java inter­face only.
7An abstract class can be extend­ed using extends key­word.An inter­face class can be imple­ment­ed using imple­ments key­word.
8An abstract class can have access mod­i­fi­er like pri­vate, pro­tect­ed, etc.Mem­bers of a Java inter­face are pub­lic by default.
9Exam­ple :
pub­lic abstract class Stu­dent­De­tails{
pub­lic abstract void fees­De­tail();
}
Exam­ple :
pub­lic inter­face School{
void fees­De­tail();
}

(Read Also : Com­ments, Iden­ti­fiers & key­words in Java)