Polymorphism allows one interface to behave differently depending on the object calling it. It supports method overloading and overriding. The List interface represents collections of objects and its main implementations are ArrayList, Vector, and LinkedList. Constructors initialize newly created objects and are invoked when objects are created. Access specifiers like public, private, protected, and default control object access in Java.