В соответствии с спецификациями Java переменные экземпляра не переопределяются из суперкласса подклассным классом при его расширении.
Следовательно, переменную в подклассе можно рассматривать только как разделяющую то же имя.
Также, когда конструктор A вызывается во время создания экземпляра B, переменная (intVal) инициализируется и, следовательно, выводится.
В документации для Queue
перечислены различные реализации, в том числе
Выберите реализацию, которая соответствует вашим потребностям.
Нет, класса Queue
нет, потому что существует множество различных способов реализации очереди, и вам нужно выбрать тот, который подходит вашему варианту использования. То же самое относится и к любым другим коллекциям в структуре коллекций - например, ArrayList
и LinkedList
оба реализуют List
. Общий шаблон, который является хорошим способом использования наследования объектов:
Интерфейс , например, Queue
определяет роль, которую вы хотите, чтобы объект играл;
Подинтерфейсы , например, Deque
, дополнительно расширяет или специализирует роль - в этом случае «очередь» или двусторонняя очередь позволяет добавлять и удалять элементы с обоих концов очереди, в отличие от добавления только к задней части и удаления из front;
Классы обеспечивают реализацию того, как объект выполняет роль. Например, ArrayDeque
использует изменяемый размер массива для реализации двусторонней очереди, которая имеет различные сильные и слабые стороны по сравнению с LinkedList
, в котором используется связанный список.
Чтобы развить идею интерфейса как роли, отметим, что, хотя ArrayDeque
реализует Deque
, вы можете использовать его как Queue
, не беспокоясь об этом, потому что реализация обоих интерфейсов означает, что он может играть обе роли. Точно так же LinkedList
может носить шляпу List
, Queue
или Deque
.
По этой причине нормальный (рекомендуемый) способ использовать что-то вроде платформы Collections - это программировать интерфейс , то есть использовать интерфейс при использовании класса, а не самого имени класса. Например, вы могли бы создать объект, подобный этому:
Queue<String> logQueue = new ConcurrentLinkedQueue<String>();
...
logQueue.add("Log message");
Таким образом, вы
В Javadocs приведен список классов, которые реализуют очередь
.
Все известные реализующие классы:
AbstractQueue , ArrayBlockingQueue , ArrayDeque , ConcurrentLinkedQueue , DelayQueue , LinkedBlockingQue , [116047D] Linked Link LinkedList , PriorityBlockingQueue , PriorityQueue , SynchronousQueue
Есть также некоторые подинтерфейсы, которые могут оказаться полезными:
Все известные подинтерфейсы:
Зависит от ваших приоритетов.
Если производительность - ваша абсолютная характеристика вождения, то непременно используйте самую быструю. Просто убедитесь, что у вас есть полное понимание различий, прежде чем сделать выбор
serialize ()
вам необходимо добавить дополнительный параметр, чтобы сохранить символы UTF-8 нетронутыми: json_encode ($ array , JSON_UNESCAPED_UNICODE)
(в противном случае он преобразует символы UTF-8 в escape-последовательности Unicode). __ sleep ()
и __ wakeup ()
с JSON PHP> = 5.
As well as using the API docs to find "all known implementing classes", there are often other non-public implementation that are nevertheless available through the public API (only without requiring reams of pointless documentation). If you click on "use" you will also find Collections.asLifoQueue (Deque
is already a Queue
, but it is FIFO rather than a stack).
import java.util.Queue;
только что
Enqueue function == Queue_Object.add(input_value);
Dequeue function == Queue_Object.pull(); //return the value and delete it from queue
http://java.sun.com/javase/6/docs/api/java/util/Queue.html - см. Раздел «Все известные классы реализации». Существует множество реализаций, которые подходят для разных целей.
Хотя ответы звучат пренебрежительно, на самом деле они довольно круты, когда учат вас ловить рыбу. Очередь - это просто способ посмотреть на коллекцию, поэтому многие коллекции могут ее реализовать. Кроме того, вещи, которые действуют как коллекции, но с определенной другой логикой (например, очереди потоков), могут использовать тот же интерфейс.
Знание, где искать javadocs, является большой помощью. Я уверен, что вы смотрели, но просто не думали смотреть на реализации. Живите и учитесь.
Иногда вам также может приходиться прогонять списки подклассов / расширений. Как если бы вы посмотрели на Queue и увидели AbstractQueue, вы, возможно, захотите посмотреть, какие классы реализуют это.
Я избавлюсь от одного из ваших -1 для ya:)