Понимание конструкции объекта и назначения

-4

import java.util.*;

public class DisplayDeck {
public static void main(String[] args) {
Deck deck = new Deck();
for (int suit = Card.DIAMONDS; suit <= Card.SPADES; suit++) {
for (int rank = Card.ACE; rank <= Card.KING; rank++) {
Card card = deck.getCard(suit, rank);
System.out.format("%s of %s%n",
card.rankToString(card.getRank()),
card.suitToString(card.getSuit()));
}
}
}
}

Из

Deck deck = new Deck();

Я могу понять, что он пытается создать экземпляр класса Deck с помощью колоды объектов. Но когда дело доходит до

Card card = deck.getCard(suit, rank);

где Card - это класс, нет new оператора, связанного с ним, но он приравнивается к чему-то другому, хотя LHS, похоже, больше напоминает создание класса Class.

спросил(а) 2015-12-27T10:34:00+03:00 4 года, 6 месяцев назад
0
118

Похоже, что вас смущает концепция назначения ссылки на объект. См. Эту ссылку для подробного объяснения.

"LHS", к которому вы обращаетесь (Card card), является левой стороной оператора присваивания. Правая часть - это вызов метода, который возвращает ссылку на объект (и ссылка, возвращаемая методом, затем назначается переменной card с левой стороны). Метод (getCard()) может создать объект, ссылка на который он возвращает, но он больше похож на объект карты, вероятно, создан конструктором Deck() и, вероятно, хранится в некотором виде для поиска по карте. Было бы неэффективно создавать новый объект Карты каждый раз, когда getCard().

ответил(а) 2015-12-27T10:56:00+03:00 4 года, 6 месяцев назад
38

В getCard Deck есть метод getCard, который принимает аргументы в аргументах suit и rank (целые числа), а затем каким-то образом с какой-то логикой возвращает экземпляр класса Card.

ответил(а) 2015-12-27T10:38:00+03:00 4 года, 6 месяцев назад
39

Вы должны изучить класс Deck чтобы узнать, что deck.getCard(suit,rank). Вероятно, он либо создает новый экземпляр Card (используя new), либо возвращает ссылку на существующий экземпляр Card хранящийся в экземпляре Deck.

ответил(а) 2015-12-27T10:36:00+03:00 4 года, 6 месяцев назад
-4

АЛМАЗЫ и такие константы (public static final int DIAMONDS = 1;//or similar), которые определены в классе карты. Поскольку они являются статическими, они существуют, даже если нет экземпляра Карты.

ответил(а) 2015-12-27T10:40:00+03:00 4 года, 6 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема