Difference between abstract class and interface
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 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.
1.
//Creating interface that has 4 methods
2.
interface A{
3.
void a();//bydefault, public and abstract
4.
void b();
5.
void c();
6.
void d();
7. }
8.
9.
//Creating abstract class that provides the implementation of one method of A interface
10.
abstract class B implements A{
11.
public void c(){System.out.println("I am C");}
12. }
13.
14.
//Creating subclass of abstract class, now we need to provide the implementation of rest of the methods
15.
class M extends B{
16.
public void a(){System.out.println("I am a");}
17.
public void b(){System.out.println("I am b");}
18.
public void d(){System.out.println("I am d");}
19. }
20.
21.
//Creating a test class that calls the methods of A interface
22.
class Test5{
23.
public static void main(String args[]){
24. A a=new M();
25. a.a();
26. a.b();
27. a.c();
28. a.d();
29. }}
Output:
I am a
I am b
I am c
I am d
No comments:
Post a Comment