In het algemeen is het echter mogelijk in een subklassetype een methode zodanig te herdefinieren dat ook haar type wijzigt, mits er aan de volgende voorwaarden is voldaan: - het nieuwe resultaatype is een subtype van het oorspronkelijke resultaattype (covariante wijziging van het resultaattype) - Het nieuwe parametertype is een subtype van het oorspronkelijke parametertype (contravariante wijziging van het parametertype. Als we methoden op deze wijze in een subklassetype herdefinieren, is de typeveiligheid statisch gegarandeerd