Social Media

Interfaces vs Abstract Classes

Why write another article on the differences between java interfaces and abstract classes? Well I’m getting used to using WordPress so thought it was a good place to start.

The key differences are –

abstract class – IS-A

  • IS-A relationship
  • Cannot be instantiated
  • Uses abstract keyword
  • Abstract methods must use abstract keyword
  • Used when you want the programmer to complete the implementation
  • Faster in JVM does not have to lookup

interface – CAN-DO

  • CAN-DO relationship
  • Cannot be instantiated
  • No implementation
  • Polymorphism
  • public abstract by default
  • public static final by default
  • Provides a contract/rules – idea of what needs to be done, not how
  • Slower in JVM as extra indirection looking up implementation

When to use an interface and abstract class?

The advantage of an interface is that you have a contract which any class can conform to, including existing classes. The advantage of an abstract class is that you can implement and encapsulate some core logic for your application, leaving the developer to code there own implementation

You may also want to use both, for example java.util.List is the interface, and java.util.AbstractList contains a core. You can also see this approach used in frameworks


About the Author Martin Farrell

My name is Martin Farrell. I have almost 20 years Java experience. I specialize inthe Spring Framework and JEE. I’ve consulted to a range of businesses, and have provide Java and Spring mentoring and training. You can learn more at About or on my consultancy website Glendevon Software

follow me on:

Leave a Comment: