What is the difference between interface and abstract class?

By: Karthik Printer Friendly Format    

  • interface contains methods that must be abstract; abstract class may contain concrete methods.
  • interface contains variables that must be static and final; abstract class may contain non-final and final variables.
  • members in an interface are public by default, abstract class may contain non-public members.
  • interface is used to "implements"; whereas abstract class is used to "extends".
  • interface can be used to achieve multiple inheritance; abstract class can be used as a single inheritance.
  • interface can "extends" another interface, abstract class can "extends" another class and "implements" multiple interfaces.
  • interface is absolutely abstract; abstract class can be invoked if a main() exists.
  • interface is more flexible than abstract class because one class can only "extends" one super class, but "implements" multiple interfaces.
  • If given a choice, use interface instead of abstract class.


Ask a Question



Most Viewed Articles (in Interview )

Interview Question: What is the difference between EAR, JAR and WAR file?

Explain garbage collection?

Interview Question: What is deployment descriptor?

Can Entity Beans have no create() methods?

Explain the new Features of JDBC 2.0 Core API?

What types of comments are available in the JSP?

Interview Question: What is Struts?

Interview Question: How is the MVC design pattern used in Struts framework?

Interview Question: What is Action Class?

Interview Question: What is ActionForm?

Interview Question: Is Struts compatible with other Java technologies?

Interview Question: Does Struts include its own unit tests?

Interview Question: If the framework doesn't do what I want, can I request that a feature be added?

Interview Question: Do ActionForms have to be true JavaBeans?

Interview Question: What is difference between EJB 1.1 and EJB 2.0?

Latest Articles (in Interview)

Comment on this tutorial