Abstract Class

  • An abstract class never be instantiated. It is used by extending it.
  • Abstract class has generic methods (Abstract methods) common to all sub classes .
  • Abstract methods are body less methods (Methods Prototypes) and child classes override the abstract methods.
Example:
abstract class Account 
{
	public void deposit() {} 
	public void withdraw() {} 
	public void checkBalance() {} 
	public abstract float rateOfInterest(); 
	public abstract String[] services(); 
 }
class SavingAccount extends Account
{
    public float rateOfInterest(){}
    public String[] services(){}
}
class CurrentAccount extends Account
{
	public float rateOfInterest(){}
    /* Now this class become abstract , if you not override all the  */ 
    /* abstract methods of abstract class, your class become abstract too. */
}


Interface vs Abstract class


Interface Abstract Class
Main difference is methods of a Java interface are implicitly abstract and cannot have implementations. A Java abstract class can have instance methods that implements a default behavior.
Variables declared in a Java interface is by default final. An abstract class may contain non-final variables.
Members of a Java interface are public by default. A Java abstract class can have the usual flavors of class members like private, protected, etc..
Java interface should be implemented using keyword "implements"; A Java abstract class should be extended using keyword "extends".
An interface can extend another Java interface only an abstract class can extend another Java class and implement multiple Java interfaces.
A Java class can implement multiple interfaces but it can extend only one abstract class. A Java class can extend only one abstract class.
Interface is absolutely abstract and cannot be instantiated; A Java abstract class also cannot be instantiated, but can be invoked if a main() exists.
Java interfaces are slow as it requires extra indirection. Java abstract classes are faster than the Interface.