Question: In which of these situations are interfaces better than abstract classes?

  1. When you need to define an object type's characteristics, use an interface. When you need to define an object type's capabilities, use an abstract class.
  2. Interfaces are a legacy of older versions of C#, and are interchangeable with the newer abstract class feature.
  3. When you need a list of capabilities and data that are classes-agnostic, use an interface. When you need a certain object type to share characteristics, use an abstract class.
  4. You should use both an interface and an abstract class when defining any complex object.

Answer: The correct answer of the above question is Option C:When you need a list of capabilities and data that are classes-agnostic, use an interface. When you need a certain object type to share characteristics, use an abstract class.