Что означают понятия «ковариация» и «контравариантность»?
Учитывая 2 класса, Animal и Elephant (который наследуется от Animal), я понимаю, что вы получите ошибки времени выполнения, если попытаетесь и поместите Elephant в массив Animals, и это происходит потому, что Elephant «больше» (точнее), чем Animal. Но не могли бы вы поместить Animal в массив Elephant, видя, как Elephant гарантированно содержит свойства Animal?