mainly wildcards, you can design an interface which is covariant and contravariant, and real interference when calling a generic method.