#inheritance #polymorphism
#наследование #полиморфизм
Вопрос:
Я новичок в объектной ориентации, и я думаю, что это я пытаюсь использовать полиморфизм, а также делаю это ужасно, но мне нужна помощь. У меня есть мой класс DSAQueue, который должен создавать очередь, но сделан из массива. Однако у меня есть другой класс, называемый ShufflingQueue, который отвечает за перетасовку всех элементов массива вперед и назад. Как мне, по сути, создать объект DSAQueue и создать очередь, а также использовать метод из класса ShufflingQueue?
public class DSAQueue
{
public static int DEFAULT_CAPACITY = 100;
//Classfields
Object[] queue = null;
int count;
//default constructor
public DSAQueue()
{
queue = new Object[DEFAULT_CAPACITY];
count = 0;
}
}
public class ShufflingQueue extends DSAQueue
{
public void enqueue(int value)
{
queue[count] = value;
count ;
}
}
public static void main(String[] args)
{
DSAQueue queue = new ShufflingQueue();
//Declare DSAqueues
queue = new DSAQueue();
//Fill the second queue up
for (int i = 0; i < 40; i )
{
queue.enqueue(2 * i (i / 4));
}
}
Ответ №1:
Не могли бы вы, пожалуйста, немного подробнее рассказать о том, чего вы пытаетесь достичь? Если я правильно понимаю, вы хотите запустить конструктор класса DSAQueue, а затем заполнить объект queue методом enqueue от ShufflingQueue? Если это так, то вы можете просто переключить эти две строки:
DSAQueue queue = new ShufflingQueue();
//Declare DSAqueues
queue = new DSAQueue();
С помощью этого:
ShufflingQueue queue = new ShufflingQueue();
Потому что, если у вас нет аргумента внутри конструктора базового класса, то он будет запущен автоматически. Если у вас будет конструктор с аргументом, тогда вам нужно будет вызвать метод super () из конструктора производного класса и передать аргумент.