"Can you explain the difference between an interface and an abstract class, including when you would choose one over the other?"