The kind of polymorphism found in object-oriented programming languages where a variable can refer to an object whose class is not known exactly until run time. A method can use a variable of a given class - call other methods on it, pass it as an argument, etc. - without needing to know to which subclass it refers, as long as its actual class is compatible with those uses.