Abstract class — can have implementation. Interface — only abstract methods (until Java 8).
Abstract class:
1public abstract class Animal {2 protected String name;34 // Implemented method5 public void eat() {6 System.out.println("Eating...");7 }89 // Abstract method10 public abstract void makeSound();11}
Interface (Java 8+):
1public interface Animal {2 // Default method3 default void eat() {4 System.out.println("Eating...");5 }67 // Abstract method8 void makeSound();9}
Java 8+ interface changes: