Covariance, Invariance and Contravariance explained in plain English?
<p>Today, I read some articles about Covariance, Contravariance (and Invariance) in Java. I read the English and German wikipedia article, and some other blog posts and articles from IBM.</p>

<p>But I'm still a little bit confused on what these is exactly about. Some say it is about relationshop between types and subtypes, other say it is about type conversion and others say it is used to decide whether a method is overwritten or overloaded.</p>

<p>So I'm looking for a easy explanation in plain English, that shows a beginner what Covariance and Contravariance (and Invariance) is. Plus point for an easy example.</p>
