differences between abstract class and interfaces code example
Example 1: difference between abstract and interface
Interface
1) Interface contains only abstract methods
2) Access Specifiers for methods in interface
must be public
3) Variables defined must be public , static ,
final
4) Multiple Inheritance in java is implemented
using interface
5) To implement an interface we use
implements keyword
Abstract Class
1) Abstract class can contain abstract methods,
concrete methods or both
2) Except private we can have any access
specifier for methods in abstract class.
3) Except private variables can have any access
specifiers
4)We cannot achieve multiple inheritance using
abstract class.
5)To implement an interface we use implements
keyword
Example 2: abstract class vs interface
***************************Abstract class*****************************
1) Abstract class can have abstract and non-abstract methods.
2) Abstract class doesn't support multiple inheritance.
3) Abstract class can have final, non-final, static and non-static variables.
4) Abstract class can provide the implementation of interface.
5) The abstract keyword is used to declare abstract class.
6) An abstract class can extend another Java class and implement multiple Java interfaces.
7) An abstract class can be extended using keyword "extends".
8) A Java abstract class can have class members like private, protected, etc.
9)Example:
public abstract class Shape{
public abstract void draw();
}
*****************************Interface********************************
1) Interface can have only abstract methods. Since Java 8, it can have default and static methods also.
2) Interface supports multiple inheritance.
3) Interface has only static and final variable
4) Interface can't provide the implementation of abstract class.
5) The interface keyword is used to declare interface.
6) An interface can extend another Java interface only.
7) An interface can be implemented using keyword "implements".
8) Members of a Java interface are public by default.
9) Example:
public interface Drawable{
void draw();
}