• Twitter
  • Facebook
  • Google+
  • Instagram
  • Youtube

Wednesday, 12 August 2015

Differences between abstract class and interface

Abstract class is a non-complete class because it contains one or more abstract methods (non complete method) and non-abstract methods. Interface has only abstract methods.
Abstract class can have final, non-final, static and non-static variables, but interface has only static and final variables.
Abstract class can have static methods, main method and constructor. Interface can not.
Whenever a class extends an abstract class, it must implement all abstract methods.
Abstract class can implement an interface but interface can not. Interface can only have abstract methods and only static and final variables.
Interface supports multiple inheritance but abstract class does not.

Table for more detail:

Abstract classInterface
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();
}

Example:

  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

Source: http://www.javatpoint.com/difference-between-abstract-class-and-interface
 
 
1. Differences between abstract class and interface 
 - Abstract class is a non-complete class because it contains one or more abstract methods (non complete method) and non-abstract methods. Interface has only abstract methods.
 - Abstract class can have final, non-final, static and non-static variables, but interface has only static and final variables.
 - Abstract class can have static methods, main method and constructor. Interface can not.
 - Whenever a class extends an abstract class, it must implement all abstract methods.
 - Abstract class can implement an interface but interface can not. Interface can only have abstract methods and only static and final variables.
 - Interface supports multiple inheritance but abstract class does not.

2. Why might a method be labelled abstract?
- Reason: when superclass contains a method which can not apply for all subclasses, in Object Oriented, mark that method as abstract for signature. Then any subclass must implement that method to use it. 

0 comments:

Post a Comment

Contact

Get in touch with me


Adress/Street

Jozi Studio -Sydney, New South Wales

Phone number

+(12) 3456 789

Website

www.learnwithjoe.blogpost.com.au