2016-05-28 3 views
0

У меня есть родительский класс с именем Student. Я создал двух детей класса PermanentStudent и CasualStudent, расширив это. Я написал конструкторы как для расширенных дочерних классов (оба дочерних класса имеют свои собственные конструкторы). Теперь я делаю массив размером 10 учеников, из которых 4 будут постоянными студентами, а 6 - случайными. Для этого я сделал следующим образом:Может ли массив родительского класса содержать объекты класса child в Java?

Student[] a = new Student[10]; 
int count; 

Теперь я хочу, чтобы заполнить массив с 4-х постоянными студентами объектов и 6 случайных студентыми объекты с информацией через их конструктор. Я делаю следующее:

for (count = 0; count < 4; count++) 
{ 
    a[count] = new PermanentStudent(a,b,c); // invoking the constructor 
} 
for (count = 4; count < 10; count++) 
{ 
    a[count] = new CasualStudent(x,y); // invoking the constructor of the other class 
} 

Но это дает мне ошибку компиляции. Где я ошибаюсь? Благодаря!

+0

«Ошибка компиляции» не очень ясна, можете ли вы сказать мне об ошибке _message_? – Sweeper

+0

Какое сообщение об ошибке вы получаете –

+0

Я получаю ошибку, которую этот конструктор не может вызвать для этого класса. –

ответ

1

Задание типа Base base = new Sub() или base[i] = new Sub() в вашем случае является законным на Java. Проблема в ваших конструкторах, проверка конструктора no-arguments существует в Student.

0

Как уже упоминалось, это проблема с конструкторами, а не с самим полиморфизмом (работает, когда я его тестировал?). Вероятно, проверьте, соответствуют ли ваши типы данных конструктора и нет конструкторов для инициализации в вашем суперклассе

Смежные вопросы