What is duck typing and does C# support it with interfaces?
- Duck typing: "If it looks like a duck and quacks like a duck, it is a duck."
- Behavior is based on method/property availability, not type inheritance.
- C# does not support full dynamic duck typing, but interfaces enable a similar
concept by relying on contract-based behavior.
- Dynamic types in C# (dynamic) can also simulate duck typing.
interface IFlyable { void Fly(); }
void MakeItFly(IFlyable obj) => obj.Fly(); // Any object
implementing IFlyable works