What the heck is polymorphism?
Google it, and you are bound to find places where function overloading is cited as an example of polymorphism. But does being able to not name your methods differently for different argument sets really qualify as one of the 3 fundamental OOP principles? Is going from void FeedCookie(Cookie inputCookie); void FeedMeat(Meat inputMeat); to void Feed(Cookie inputCookie); void Feed(Meat inputMeat); really something that you can't do OOP without? It isn't, in fact there are cases where trying to save a bit of time with this can backfire. Just go for the proper answer: interfaces are polymorphism, because signatures are the same but the underlying methods can be completely different. And you really can't do OOP without them.