new AbstractClass[5] в данном случае не образует новых объектов класса AbstractClass, эта строчка только инстантиирует массив из 5 элементов. Соответственно в данный массив можно будет положить любой объект неабстрактного класса который extends AbstractClass.
сравни с
| Код | AbstractClass arr = new AbstractClass();
|
здесь пытаемся образовать объект абстрактного класса, естественно компилятор выдаст ошибку.
PS ах да, массивы всегда создаются с типом. Язык так устроен. Пример
| Код | int [] i = new int[5]; Integer [] i2 = new Integer[5];
|
|