An abstract class can have method implementations, while an interface can only have abstract methods (prior to Java 8). An interface is used to achieve multiple inheritance, whereas an abstract class is used for common base functionality.