Have a look at the JDK itself. You'll see polymorphism in lots of places, for example if you look at the java.util Collections. There's a java.util.List interface reference type can behave like an ArrayList or a LinkedList, depending on the runtime type you assign to it.