Other than objects of type object, all Java objects are polymorphic in that they pass the IS-A test for their own type and for class Object.
Polymorphic method invocations apply only to instance methods. You can always refer to an object with a more general reference variable type (a superclass or interface), but at runtime, the ONLY things that are dynamically selected based on the actual object (rather than the reference type) are instance methods. Not static methods. Not variables. Only overridden instance methods are dynamically invoked based on the real object's type.
You cannot override a method marked final. You cannot override a method marked static.
Note: Using super to invoke an overridden method only applies to instance methods.(Remember, static methods can't be overridden.)