Как сделать массив объектов нескольких классов?

Рейтинг: 2Ответов: 2Опубликовано: 03.05.2015

Необходимо... В приложении создать массив объектов Product-(Book, Shoe,Toy, Picture) , состоящий из количества элементов заданного параметром. имеется 4 класса book shoe toy picture.

делаю вот так

Shoe Product[] = new Shoe[4];
for (int i = 0; i < 4; i++) {
    Product[i] = new picture();
    Product[i] = new Shoe();
    Product[i] = new Book();
    Product[i] = new toy();  
}

Но как правильно сделать?

Ответы

▲ 6Принят
Product[] products = new Product[4];
products[0] = new Picture();
products[1] = new Shoe();
products[2] = new Book();
products[3] = new Toy();

В вашем коде есть несколько ошибок:

  1. Судя по всему, Product является базовым классом или интерфейсом, а Picture, Shoe, Book, Toy -- его наследниками. Для того, чтобы поместить в один массив экземпляры разных классов, массив должен иметь в качестве элемента некоторый базовый тип -- Product в вашем случае.
  2. На каждой итерации цикла вы четырежды присваиваете i-му элементу массива разные объекты, в результате у вас получается массив из четырех экземпляров класса Toy.
▲ 5
public interface Product {/* ... */}
public class Picture implements Product { /* ... */ }
public class Shoe implements Product { /* ... */ }
public class Book implements Product { /* ... */ }
public class Toy implements Product { /* ... */ }

List< Product > products = new ArrayList< Product >();

products.add(new Picture());
products.add(new Shoe());
products.add(new Book());
products.add(new Toy());