Итак, у меня есть класс cat, который реализует интерфейс Vocal, мне было интересно, почему, когда я создал ArrayList(Vocal) Я смог добавить к нему экземпляры cat?
cat
Vocal
ArrayList(Vocal)
Спасибо
Это потому, что когда Cat реализует Vocal, это отношение IS-A: Cat IS-A Vocal.
Cat
Поскольку List<Vocal> принимает все, что является Vocal, добавление экземпляра Cat совершенно законно.
List<Vocal>
Да. Вы сможете добавить экземпляр любого класса, который объявлен для реализации Vocal.
В вашем случае отношения будут точно такими же
Кошки тоже вокал.
Так вот почему вы смогли добавить массив CATS в Arraylist Vocal Type