An interface can only declare constants and abstract methods but cannot implement default behavior, while an abstract class can have instance methods that implement default behavior. An interface has all public members and no implementation, whereas an abstract class can have various member access types but must contain at least one abstract method.