Downcasting
Downcasting
Act of casting a reference of a base class to one of its derived classes
In class-based programming, downcasting, or type refinement, is the act of casting a base or parent class reference, to a more restricted derived class reference.[1] This is only allowable if the object is already an instance of the derived class, and so this conversion is inherently fallible.
This article includes a list of general references, but it lacks sufficient corresponding inline citations. (August 2008) |
In many environments, type introspection can be used to obtain the type of an object instance at runtime, and then use this result to explicitly evaluate its type compatibility with another type. The possible results of comparing polymorphic types—besides them being equivalent (identical), or unrelated (incompatible)—include two additional cases: namely, where the first type is derived from the second, and then the same thing but swapped the other way around (see: Subtyping § Subsumption).
With this information, a program can test, before performing an operation such as storing an object into a typed variable, whether that operation is type safe, or whether it would result in an error. If the type of the runtime instance is derived from (a child of) the type of the target variable (therefore, the parent), downcasting is possible.