An interface is a collection of abstract methods and constants that form a common set of base rules for a class to follow. An interface does not contain any implementation code, and it cannot be instantiated. An example of an interface might be a Comparable interface which defines the compareTo() method.
An abstract class is a class that contains both abstract methods (methods without an implementation) and concrete methods (methods with an implementation). An abstract class can be instantiated, and it is often used as a base class from which other classes can inherit. An example of an abstract class might be an Animal class which defines the abstract method makeSound() and the concrete method eat().