По заданию нужно сделать список, принимающий только экземпляры класса Student. Как это сделать?
Подобного результата вы можете достичь, создав обобщённый список и закрыв его типом Student.
Обобщения (generics) позволяют нам создавать "универсальные" структуры данных, которые можно заполнить любым типом данных. Как только будет произведено "пополнение" структуры (в нашем случае - List) - она "закроется" этим типом, и далее будет возможно заполнять её ИСКЛЮЧИТЕЛЬНО экземплярами данного типа (в нашем случае - Student).