top button
Flag Notify
Site Registration

What is the difference between an Interface and abstract class?

+1 vote
480 views
What is the difference between an Interface and abstract class?
posted Jan 27, 2017 by Dhaval Vaghela

Share this question
Facebook Share Button Twitter Share Button LinkedIn Share Button
Hi Buddy you can visit this useful link related to the difference between an Interface and abstract class.I hope it will solve your problem.

http://beginnersbook.com/2013/05/abstract-class-vs-interface-in-java/
https://www.mindstick.com/Forum/23098/difference-between-abstract-class-and-interface-in-java

1 Answer

0 votes

Abstract class and interface both are used to achieve abstraction where we can declare the abstract methods. Abstract class and interface both can't be instantiated.

But there are many differences between abstract class and interface that are given below.

Abstract class Interface
1) Abstract class can have abstract and non-abstract methods. Interface can have only abstract methods.
2) Abstract class doesn't support multiple inheritance. Interface supports multiple inheritance.
3) Abstract class can have final, non-final, static and non-static variables. Interface has only static and final variables.
4) Abstract class can have static methods, main method and constructor. Interface can't have static methods, main method or constructor.
5) Abstract class can provide the implementation of interface. Interface can't provide the implementation of abstract class.
6) The abstract keyword is used to declare abstract class. The interface keyword is used to declare interface.
7) Example:

public abstract class Shape{
public abstract void draw();
}   Example:
public interface Drawable{
void draw();
}

Simply, abstract class achieves partial abstraction (0 to 100%) whereas interface achieves fully abstraction (100%).

Example of abstract class and interface in Java

Let's see a simple example where we are using interface and abstract class both.

//Creating interface that has 4 methods

interface A{  
void a();//bydefault, public and abstract  
void b();  
void c();  
void d();  
}  

//Creating abstract class that provides the implementation of one method of A interface

abstract class B implements A{  
public void c(){System.out.println("I am C");}  
}  

//Creating subclass of abstract class, now we need to provide the implementation of rest of the methods

class M extends B{  
public void a(){System.out.println("I am a");}  
public void b(){System.out.println("I am b");}  
public void d(){System.out.println("I am d");}  
}  

//Creating a test class that calls the methods of A interface

class Test5{  
public static void main(String args[]){  
A a=new M();  
a.a();  
a.b();  
a.c();  
a.d();  
}}  

Output:

   I am a
   I am b
   I am c
   I am d
answer Feb 2, 2017 by Karthick.c
Similar Questions
+2 votes

What is the difference between abstract class and concrete class in java. If concrete class is final then how can inherit concrete class, can someone please explain in detail?

...