It's a common misconception that interfaces are the only way to do polymorphism, because that's usually the only way in Java.