2017-02-19 11 views
-5

У меня есть 3 класса, и я хочу поместить их в массив. Массив имеет длину A, и я хочу определить по этой длине, что первые 3 слота уникальны только из этих классов. Длина A задается клавиатурой. Я только отправляю код, с которым у меня проблемы. Этот код находится в моей основной и ложной. Stereo, Ygro, Aerio подтипы Food.классы наследования массиву

Food[] pin = new Food[A]; // this the array that include all classes Stereo,Ygro,Aerio 
for (int i = 0; i < 3; i++) { 
    pin[i] = new Stereo(); //this is a class start i=0 
    pin[i+1] = new Ygro(); // this is a class 
    pin[i+2] = new Aerio(); // this is a class 
} 
+1

* я хочу, чтобы определить на этой длине, что первые 3 слота уникальны только из этих классов. * Что? – shmosel

+1

Элементы 'pin' имеют тип' int'. Вы не можете назначить 'Stereo' своим элементам, не более, чем вы можете написать' int s = new Stereo(); '. –

+0

Pin - это массив int, поэтому вы не можете поместить в него объекты. –

ответ

0

Вам нужно, чтобы массив был массивом суперкласса классов, который вы хотите сохранить. Как это:

SuperClass[] pin = new SuperClass[A]; 

Затем, когда доступ к элементам отлитые их тир типов, как это:

if (pin[0] instanceof SubClass) { 
    SubClass obj = (SubClass)pin[0]; 
    System.out.println(obj.customField); 
} 

SubClass является подтипом SuperClass

+0

должен ли он остановиться, когда он идет 2.I означает (i = 0, i = 1, i = 2). Длина A продолжается или она заканчивается там? –

+0

@qa Вы можете заменить 0 на что-либо, что является числом, и находится в диапазоне от 0 до A-1 включительно – cookie

+0

человек я сделаю вам статую действительно спасибо большое <3 так много времени, чтобы кто-то раскрыть меня, да, я не был таким хорошо давая понимание, но это было то, что мне было нужно спасибо :) –