Abstract class and interface both of these are used to achieve abstraction where the abstract method can be declared. Abstract class and interface both of these cannot be instantiated.
But there are many variations between abstract class and interface which are given below.
Abstract class | Interface |
It can have method body (non-abstract methods) i.e. Abstract class can consists of abstract and non-abstract methods. | It have only abstract methods. In Java 8 and higher versions, an interface can also consists of default and static methods. |
It can have instance variables. | It cannot have instance variables. |
It can have constructor. | It cannot have constructor. |
It can have static methods. | It cannot have static methods till Java 7 but since Java 8, an interface can also have static methods. |
You can extends one abstract class and hence does not support multiple inheritance. | You can implement multiple interfaces and hence support multiple inheritance. |
An abstract class can implement an interface. | An interfaces can not extends an abstract class. |
An abstract class can extends another class as well as can implement an interface. | An interfaces can extends another interface and can not extends an abstract or non abstract class. |
An abstract class declared with abstract class. | An interfaces declared with interface keyword. |
The extends keyword is used to extend an abstract class by another class. | The implements keyword is used to implement an interfaces by java class. |
Example: Abstract Class
abstract class SubtractionTest { abstract void subtraction(int num1, int num2); } public class Main extends SubtractionTest { public void subtraction(int num1, int num2) { System.out.println(num1 - num2); } public static void main(String[] args) { SubtractionTest subtractionTest = new Main(); subtractionTest.subtraction(150, 100); } } |
Output
50 |
Example: Interface
interface SubtractionTest { void subtraction(int num1, int num2); } public class Main implements SubtractionTest { public void subtraction(int num1, int num2) { System.out.println(num1 - num2); } public static void main(String[] args) { SubtractionTest subtractionTest = new Main(); subtractionTest.subtraction(150, 100); } } |
Output
50 |
Java interview questions on interface and abstract class
- What is interface in java?
- Can we declare an interface method static in java?
- Can an interface be declared final in java?
- What is marker interface and how we can create it?
- What is difference between abstract class and interface in java?
- What is abstract class in java?
- Why abstract class is used in java?
- Can abstract class have constructors in java?
- Can abstract class be final in java?
- Can we declare local inner class as abstract?