An abstract class can have both abstract and concrete methods, while an interface can only have abstract methods. An abstract class can have instance variables, while an interface cannot.